"""
Autogenerated python message buffer code.
Source: clad/externalInterface/messageGameToEngine.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/messageGameToEngine.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.AudioMetaData.GameParameter = msgbuffers.Namespace()
Anki.AudioMetaData.GameState = msgbuffers.Namespace()
Anki.AudioMetaData.SwitchState = 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.audioMessage import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.externalInterface.messageActions 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.behaviorSlot import Anki as _Anki
Anki.update(_Anki.deep_clone())

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

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

from clad.types.customObjectMarkers 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.emotionTypes 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.globalVizOrigin import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.imageFormats 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.objectTypes 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.poseStructs import Anki as _Anki
Anki.update(_Anki.deep_clone())

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

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

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

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

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

  __slots__ = (
    '_reserved',       # uint_8
    '_connectionType', # Anki.Vector.UiConnectionType
    '_deviceID',       # uint_32
    '_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(
      'UiDeviceConnectionWrongVersion.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(
      'UiDeviceConnectionWrongVersion.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(
      'UiDeviceConnectionWrongVersion.deviceID', value, 0, 4294967295)

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

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

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new UiDeviceConnectionWrongVersion from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('UiDeviceConnectionWrongVersion.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 UiDeviceConnectionWrongVersion from the given BinaryReader."
    _reserved = reader.read('B')
    _connectionType = reader.read('B')
    _deviceID = reader.read('I')
    _buildVersion = reader.read_string('B')
    return cls(_reserved, _connectionType, _deviceID, _buildVersion)

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

  def pack_to(self, writer):
    "Writes the current UiDeviceConnectionWrongVersion to the given BinaryWriter."
    writer.write(self._reserved, 'B')
    writer.write(self._connectionType, 'B')
    writer.write(self._deviceID, 'I')
    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._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_string(self._buildVersion, 'B'))

  def __str__(self):
    return '{type}(reserved={reserved}, connectionType={connectionType}, deviceID={deviceID}, buildVersion={buildVersion})'.format(
      type=type(self).__name__,
      reserved=self._reserved,
      connectionType=self._connectionType,
      deviceID=self._deviceID,
      buildVersion=msgbuffers.shorten_string(self._buildVersion))

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

Anki.Vector.ExternalInterface.UiDeviceConnectionWrongVersion = UiDeviceConnectionWrongVersion
del UiDeviceConnectionWrongVersion


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

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

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

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

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

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

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ConnectToUiDevice from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ConnectToUiDevice.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 ConnectToUiDevice from the given BinaryReader."
    _connectionType = reader.read('B')
    _deviceID = reader.read('B')
    return cls(_connectionType, _deviceID)

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

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

  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, 'B'))

  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.ConnectToUiDevice = ConnectToUiDevice
del ConnectToUiDevice


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

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

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

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

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

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

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new DisconnectFromUiDevice from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('DisconnectFromUiDevice.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 DisconnectFromUiDevice from the given BinaryReader."
    _connectionType = reader.read('B')
    _deviceID = reader.read('B')
    return cls(_connectionType, _deviceID)

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

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

  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, 'B'))

  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.DisconnectFromUiDevice = DisconnectFromUiDevice
del DisconnectFromUiDevice


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new UserLoggedIn from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('UserLoggedIn.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 UserLoggedIn from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current UserLoggedIn 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.UserLoggedIn = UserLoggedIn
del UserLoggedIn


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

  __slots__ = (
    '_lwheel_speed_mmps',  # float_32
    '_rwheel_speed_mmps',  # float_32
    '_lwheel_accel_mmps2', # float_32
    '_rwheel_accel_mmps2', # float_32
  )

  @property
  def lwheel_speed_mmps(self):
    "float_32 lwheel_speed_mmps struct property."
    return self._lwheel_speed_mmps

  @lwheel_speed_mmps.setter
  def lwheel_speed_mmps(self, value):
    self._lwheel_speed_mmps = msgbuffers.validate_float(
      'DriveWheels.lwheel_speed_mmps', value, 'f')

  @property
  def rwheel_speed_mmps(self):
    "float_32 rwheel_speed_mmps struct property."
    return self._rwheel_speed_mmps

  @rwheel_speed_mmps.setter
  def rwheel_speed_mmps(self, value):
    self._rwheel_speed_mmps = msgbuffers.validate_float(
      'DriveWheels.rwheel_speed_mmps', value, 'f')

  @property
  def lwheel_accel_mmps2(self):
    "float_32 lwheel_accel_mmps2 struct property."
    return self._lwheel_accel_mmps2

  @lwheel_accel_mmps2.setter
  def lwheel_accel_mmps2(self, value):
    self._lwheel_accel_mmps2 = msgbuffers.validate_float(
      'DriveWheels.lwheel_accel_mmps2', value, 'f')

  @property
  def rwheel_accel_mmps2(self):
    "float_32 rwheel_accel_mmps2 struct property."
    return self._rwheel_accel_mmps2

  @rwheel_accel_mmps2.setter
  def rwheel_accel_mmps2(self, value):
    self._rwheel_accel_mmps2 = msgbuffers.validate_float(
      'DriveWheels.rwheel_accel_mmps2', value, 'f')

  def __init__(self, lwheel_speed_mmps=0.0, rwheel_speed_mmps=0.0, lwheel_accel_mmps2=0.0, rwheel_accel_mmps2=0.0):
    self.lwheel_speed_mmps = lwheel_speed_mmps
    self.rwheel_speed_mmps = rwheel_speed_mmps
    self.lwheel_accel_mmps2 = lwheel_accel_mmps2
    self.rwheel_accel_mmps2 = rwheel_accel_mmps2

  @classmethod
  def unpack(cls, buffer):
    "Reads a new DriveWheels from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('DriveWheels.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 DriveWheels from the given BinaryReader."
    _lwheel_speed_mmps = reader.read('f')
    _rwheel_speed_mmps = reader.read('f')
    _lwheel_accel_mmps2 = reader.read('f')
    _rwheel_accel_mmps2 = reader.read('f')
    return cls(_lwheel_speed_mmps, _rwheel_speed_mmps, _lwheel_accel_mmps2, _rwheel_accel_mmps2)

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

  def pack_to(self, writer):
    "Writes the current DriveWheels to the given BinaryWriter."
    writer.write(self._lwheel_speed_mmps, 'f')
    writer.write(self._rwheel_speed_mmps, 'f')
    writer.write(self._lwheel_accel_mmps2, 'f')
    writer.write(self._rwheel_accel_mmps2, 'f')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._lwheel_speed_mmps == other._lwheel_speed_mmps and
        self._rwheel_speed_mmps == other._rwheel_speed_mmps and
        self._lwheel_accel_mmps2 == other._lwheel_accel_mmps2 and
        self._rwheel_accel_mmps2 == other._rwheel_accel_mmps2)
    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._lwheel_speed_mmps, 'f') +
      msgbuffers.size(self._rwheel_speed_mmps, 'f') +
      msgbuffers.size(self._lwheel_accel_mmps2, 'f') +
      msgbuffers.size(self._rwheel_accel_mmps2, 'f'))

  def __str__(self):
    return '{type}(lwheel_speed_mmps={lwheel_speed_mmps}, rwheel_speed_mmps={rwheel_speed_mmps}, lwheel_accel_mmps2={lwheel_accel_mmps2}, rwheel_accel_mmps2={rwheel_accel_mmps2})'.format(
      type=type(self).__name__,
      lwheel_speed_mmps=self._lwheel_speed_mmps,
      rwheel_speed_mmps=self._rwheel_speed_mmps,
      lwheel_accel_mmps2=self._lwheel_accel_mmps2,
      rwheel_accel_mmps2=self._rwheel_accel_mmps2)

  def __repr__(self):
    return '{type}(lwheel_speed_mmps={lwheel_speed_mmps}, rwheel_speed_mmps={rwheel_speed_mmps}, lwheel_accel_mmps2={lwheel_accel_mmps2}, rwheel_accel_mmps2={rwheel_accel_mmps2})'.format(
      type=type(self).__name__,
      lwheel_speed_mmps=repr(self._lwheel_speed_mmps),
      rwheel_speed_mmps=repr(self._rwheel_speed_mmps),
      lwheel_accel_mmps2=repr(self._lwheel_accel_mmps2),
      rwheel_accel_mmps2=repr(self._rwheel_accel_mmps2))

Anki.Vector.ExternalInterface.DriveWheels = DriveWheels
del DriveWheels


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

  __slots__ = (
    '_speed',              # float_32
    '_accel',              # float_32
    '_curvatureRadius_mm', # int_16
  )

  @property
  def speed(self):
    "float_32 speed struct property."
    return self._speed

  @speed.setter
  def speed(self, value):
    self._speed = msgbuffers.validate_float(
      'DriveArc.speed', value, 'f')

  @property
  def accel(self):
    "float_32 accel struct property."
    return self._accel

  @accel.setter
  def accel(self, value):
    self._accel = msgbuffers.validate_float(
      'DriveArc.accel', value, 'f')

  @property
  def curvatureRadius_mm(self):
    "int_16 curvatureRadius_mm struct property."
    return self._curvatureRadius_mm

  @curvatureRadius_mm.setter
  def curvatureRadius_mm(self, value):
    self._curvatureRadius_mm = msgbuffers.validate_integer(
      'DriveArc.curvatureRadius_mm', value, -32768, 32767)

  def __init__(self, speed=0.0, accel=0.0, curvatureRadius_mm=0):
    self.speed = speed
    self.accel = accel
    self.curvatureRadius_mm = curvatureRadius_mm

  @classmethod
  def unpack(cls, buffer):
    "Reads a new DriveArc from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('DriveArc.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 DriveArc from the given BinaryReader."
    _speed = reader.read('f')
    _accel = reader.read('f')
    _curvatureRadius_mm = reader.read('h')
    return cls(_speed, _accel, _curvatureRadius_mm)

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

  def pack_to(self, writer):
    "Writes the current DriveArc to the given BinaryWriter."
    writer.write(self._speed, 'f')
    writer.write(self._accel, 'f')
    writer.write(self._curvatureRadius_mm, 'h')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._speed == other._speed and
        self._accel == other._accel and
        self._curvatureRadius_mm == other._curvatureRadius_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._speed, 'f') +
      msgbuffers.size(self._accel, 'f') +
      msgbuffers.size(self._curvatureRadius_mm, 'h'))

  def __str__(self):
    return '{type}(speed={speed}, accel={accel}, curvatureRadius_mm={curvatureRadius_mm})'.format(
      type=type(self).__name__,
      speed=self._speed,
      accel=self._accel,
      curvatureRadius_mm=self._curvatureRadius_mm)

  def __repr__(self):
    return '{type}(speed={speed}, accel={accel}, curvatureRadius_mm={curvatureRadius_mm})'.format(
      type=type(self).__name__,
      speed=repr(self._speed),
      accel=repr(self._accel),
      curvatureRadius_mm=repr(self._curvatureRadius_mm))

Anki.Vector.ExternalInterface.DriveArc = DriveArc
del DriveArc


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

  __slots__ = (
    '_speed_rad_per_sec', # float_32
  )

  @property
  def speed_rad_per_sec(self):
    "float_32 speed_rad_per_sec struct property."
    return self._speed_rad_per_sec

  @speed_rad_per_sec.setter
  def speed_rad_per_sec(self, value):
    self._speed_rad_per_sec = msgbuffers.validate_float(
      'MoveHead.speed_rad_per_sec', value, 'f')

  def __init__(self, speed_rad_per_sec=0.0):
    self.speed_rad_per_sec = speed_rad_per_sec

  @classmethod
  def unpack(cls, buffer):
    "Reads a new MoveHead from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('MoveHead.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 MoveHead from the given BinaryReader."
    _speed_rad_per_sec = reader.read('f')
    return cls(_speed_rad_per_sec)

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

  def pack_to(self, writer):
    "Writes the current MoveHead to the given BinaryWriter."
    writer.write(self._speed_rad_per_sec, 'f')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._speed_rad_per_sec == other._speed_rad_per_sec
    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._speed_rad_per_sec, 'f'))

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

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

Anki.Vector.ExternalInterface.MoveHead = MoveHead
del MoveHead


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

  __slots__ = (
    '_speed_rad_per_sec', # float_32
  )

  @property
  def speed_rad_per_sec(self):
    "float_32 speed_rad_per_sec struct property."
    return self._speed_rad_per_sec

  @speed_rad_per_sec.setter
  def speed_rad_per_sec(self, value):
    self._speed_rad_per_sec = msgbuffers.validate_float(
      'MoveLift.speed_rad_per_sec', value, 'f')

  def __init__(self, speed_rad_per_sec=0.0):
    self.speed_rad_per_sec = speed_rad_per_sec

  @classmethod
  def unpack(cls, buffer):
    "Reads a new MoveLift from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('MoveLift.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 MoveLift from the given BinaryReader."
    _speed_rad_per_sec = reader.read('f')
    return cls(_speed_rad_per_sec)

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

  def pack_to(self, writer):
    "Writes the current MoveLift to the given BinaryWriter."
    writer.write(self._speed_rad_per_sec, 'f')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._speed_rad_per_sec == other._speed_rad_per_sec
    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._speed_rad_per_sec, 'f'))

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

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

Anki.Vector.ExternalInterface.MoveLift = MoveLift
del MoveLift


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

  __slots__ = (
    '_enable', # bool
  )

  @property
  def enable(self):
    "bool enable struct property."
    return self._enable

  @enable.setter
  def enable(self, value):
    self._enable = msgbuffers.validate_bool(
      'EnableLiftPower.enable', value)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new EnableLiftPower from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('EnableLiftPower.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 EnableLiftPower from the given BinaryReader."
    _enable = bool(reader.read('b'))
    return cls(_enable)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._enable == other._enable
    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._enable, 'b'))

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

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

Anki.Vector.ExternalInterface.EnableLiftPower = EnableLiftPower
del EnableLiftPower


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

  __slots__ = (
    '_enable', # bool
  )

  @property
  def enable(self):
    "bool enable struct property."
    return self._enable

  @enable.setter
  def enable(self, value):
    self._enable = msgbuffers.validate_bool(
      'EnableCliffSensor.enable', value)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new EnableCliffSensor from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('EnableCliffSensor.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 EnableCliffSensor from the given BinaryReader."
    _enable = bool(reader.read('b'))
    return cls(_enable)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._enable == other._enable
    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._enable, 'b'))

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

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

Anki.Vector.ExternalInterface.EnableCliffSensor = EnableCliffSensor
del EnableCliffSensor


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

  __slots__ = (
    '_enable', # bool
  )

  @property
  def enable(self):
    "bool enable struct property."
    return self._enable

  @enable.setter
  def enable(self, value):
    self._enable = msgbuffers.validate_bool(
      'EnableStopOnCliff.enable', value)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new EnableStopOnCliff from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('EnableStopOnCliff.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 EnableStopOnCliff from the given BinaryReader."
    _enable = bool(reader.read('b'))
    return cls(_enable)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._enable == other._enable
    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._enable, 'b'))

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

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

Anki.Vector.ExternalInterface.EnableStopOnCliff = EnableStopOnCliff
del EnableStopOnCliff


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new StopAllMotors from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('StopAllMotors.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 StopAllMotors from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current StopAllMotors 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.StopAllMotors = StopAllMotors
del StopAllMotors


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

  __slots__ = (
    '_kp',               # float_32
    '_ki',               # float_32
    '_kd',               # float_32
    '_maxIntegralError', # float_32
    '_controller',       # Anki.Vector.ControllerChannel
  )

  @property
  def kp(self):
    "float_32 kp struct property."
    return self._kp

  @kp.setter
  def kp(self, value):
    self._kp = msgbuffers.validate_float(
      'ControllerGains.kp', value, 'f')

  @property
  def ki(self):
    "float_32 ki struct property."
    return self._ki

  @ki.setter
  def ki(self, value):
    self._ki = msgbuffers.validate_float(
      'ControllerGains.ki', value, 'f')

  @property
  def kd(self):
    "float_32 kd struct property."
    return self._kd

  @kd.setter
  def kd(self, value):
    self._kd = msgbuffers.validate_float(
      'ControllerGains.kd', value, 'f')

  @property
  def maxIntegralError(self):
    "float_32 maxIntegralError struct property."
    return self._maxIntegralError

  @maxIntegralError.setter
  def maxIntegralError(self, value):
    self._maxIntegralError = msgbuffers.validate_float(
      'ControllerGains.maxIntegralError', value, 'f')

  @property
  def controller(self):
    "Anki.Vector.ControllerChannel controller struct property."
    return self._controller

  @controller.setter
  def controller(self, value):
    self._controller = msgbuffers.validate_integer(
      'ControllerGains.controller', value, 0, 255)

  def __init__(self, kp=0.0, ki=0.0, kd=0.0, maxIntegralError=0.0, controller=Anki.Vector.ControllerChannel.controller_wheel):
    self.kp = kp
    self.ki = ki
    self.kd = kd
    self.maxIntegralError = maxIntegralError
    self.controller = controller

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ControllerGains from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ControllerGains.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 ControllerGains from the given BinaryReader."
    _kp = reader.read('f')
    _ki = reader.read('f')
    _kd = reader.read('f')
    _maxIntegralError = reader.read('f')
    _controller = reader.read('B')
    return cls(_kp, _ki, _kd, _maxIntegralError, _controller)

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

  def pack_to(self, writer):
    "Writes the current ControllerGains to the given BinaryWriter."
    writer.write(self._kp, 'f')
    writer.write(self._ki, 'f')
    writer.write(self._kd, 'f')
    writer.write(self._maxIntegralError, 'f')
    writer.write(self._controller, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._kp == other._kp and
        self._ki == other._ki and
        self._kd == other._kd and
        self._maxIntegralError == other._maxIntegralError and
        self._controller == other._controller)
    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._kp, 'f') +
      msgbuffers.size(self._ki, 'f') +
      msgbuffers.size(self._kd, 'f') +
      msgbuffers.size(self._maxIntegralError, 'f') +
      msgbuffers.size(self._controller, 'B'))

  def __str__(self):
    return '{type}(kp={kp}, ki={ki}, kd={kd}, maxIntegralError={maxIntegralError}, controller={controller})'.format(
      type=type(self).__name__,
      kp=self._kp,
      ki=self._ki,
      kd=self._kd,
      maxIntegralError=self._maxIntegralError,
      controller=self._controller)

  def __repr__(self):
    return '{type}(kp={kp}, ki={ki}, kd={kd}, maxIntegralError={maxIntegralError}, controller={controller})'.format(
      type=type(self).__name__,
      kp=repr(self._kp),
      ki=repr(self._ki),
      kd=repr(self._kd),
      maxIntegralError=repr(self._maxIntegralError),
      controller=repr(self._controller))

Anki.Vector.ExternalInterface.ControllerGains = ControllerGains
del ControllerGains


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

  __slots__ = (
    '_liftHeight_mm',    # float_32
    '_driveSpeed_mmps',  # float_32
    '_driveAccel_mmps2', # float_32
    '_driveDuration_ms', # uint_32
    '_backupDist_mm',    # float_32
  )

  @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(
      'RollActionParams.liftHeight_mm', value, 'f')

  @property
  def driveSpeed_mmps(self):
    "float_32 driveSpeed_mmps struct property."
    return self._driveSpeed_mmps

  @driveSpeed_mmps.setter
  def driveSpeed_mmps(self, value):
    self._driveSpeed_mmps = msgbuffers.validate_float(
      'RollActionParams.driveSpeed_mmps', value, 'f')

  @property
  def driveAccel_mmps2(self):
    "float_32 driveAccel_mmps2 struct property."
    return self._driveAccel_mmps2

  @driveAccel_mmps2.setter
  def driveAccel_mmps2(self, value):
    self._driveAccel_mmps2 = msgbuffers.validate_float(
      'RollActionParams.driveAccel_mmps2', value, 'f')

  @property
  def driveDuration_ms(self):
    "uint_32 driveDuration_ms struct property."
    return self._driveDuration_ms

  @driveDuration_ms.setter
  def driveDuration_ms(self, value):
    self._driveDuration_ms = msgbuffers.validate_integer(
      'RollActionParams.driveDuration_ms', value, 0, 4294967295)

  @property
  def backupDist_mm(self):
    "float_32 backupDist_mm struct property."
    return self._backupDist_mm

  @backupDist_mm.setter
  def backupDist_mm(self, value):
    self._backupDist_mm = msgbuffers.validate_float(
      'RollActionParams.backupDist_mm', value, 'f')

  def __init__(self, liftHeight_mm=0.0, driveSpeed_mmps=0.0, driveAccel_mmps2=0.0, driveDuration_ms=0, backupDist_mm=0.0):
    self.liftHeight_mm = liftHeight_mm
    self.driveSpeed_mmps = driveSpeed_mmps
    self.driveAccel_mmps2 = driveAccel_mmps2
    self.driveDuration_ms = driveDuration_ms
    self.backupDist_mm = backupDist_mm

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RollActionParams from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RollActionParams.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 RollActionParams from the given BinaryReader."
    _liftHeight_mm = reader.read('f')
    _driveSpeed_mmps = reader.read('f')
    _driveAccel_mmps2 = reader.read('f')
    _driveDuration_ms = reader.read('I')
    _backupDist_mm = reader.read('f')
    return cls(_liftHeight_mm, _driveSpeed_mmps, _driveAccel_mmps2, _driveDuration_ms, _backupDist_mm)

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

  def pack_to(self, writer):
    "Writes the current RollActionParams to the given BinaryWriter."
    writer.write(self._liftHeight_mm, 'f')
    writer.write(self._driveSpeed_mmps, 'f')
    writer.write(self._driveAccel_mmps2, 'f')
    writer.write(self._driveDuration_ms, 'I')
    writer.write(self._backupDist_mm, 'f')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._liftHeight_mm == other._liftHeight_mm and
        self._driveSpeed_mmps == other._driveSpeed_mmps and
        self._driveAccel_mmps2 == other._driveAccel_mmps2 and
        self._driveDuration_ms == other._driveDuration_ms and
        self._backupDist_mm == other._backupDist_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._liftHeight_mm, 'f') +
      msgbuffers.size(self._driveSpeed_mmps, 'f') +
      msgbuffers.size(self._driveAccel_mmps2, 'f') +
      msgbuffers.size(self._driveDuration_ms, 'I') +
      msgbuffers.size(self._backupDist_mm, 'f'))

  def __str__(self):
    return '{type}(liftHeight_mm={liftHeight_mm}, driveSpeed_mmps={driveSpeed_mmps}, driveAccel_mmps2={driveAccel_mmps2}, driveDuration_ms={driveDuration_ms}, backupDist_mm={backupDist_mm})'.format(
      type=type(self).__name__,
      liftHeight_mm=self._liftHeight_mm,
      driveSpeed_mmps=self._driveSpeed_mmps,
      driveAccel_mmps2=self._driveAccel_mmps2,
      driveDuration_ms=self._driveDuration_ms,
      backupDist_mm=self._backupDist_mm)

  def __repr__(self):
    return '{type}(liftHeight_mm={liftHeight_mm}, driveSpeed_mmps={driveSpeed_mmps}, driveAccel_mmps2={driveAccel_mmps2}, driveDuration_ms={driveDuration_ms}, backupDist_mm={backupDist_mm})'.format(
      type=type(self).__name__,
      liftHeight_mm=repr(self._liftHeight_mm),
      driveSpeed_mmps=repr(self._driveSpeed_mmps),
      driveAccel_mmps2=repr(self._driveAccel_mmps2),
      driveDuration_ms=repr(self._driveDuration_ms),
      backupDist_mm=repr(self._backupDist_mm))

Anki.Vector.ExternalInterface.RollActionParams = RollActionParams
del RollActionParams


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

  __slots__ = (
    '_slipFactor', # float_32
  )

  @property
  def slipFactor(self):
    "float_32 slipFactor struct property."
    return self._slipFactor

  @slipFactor.setter
  def slipFactor(self, value):
    self._slipFactor = msgbuffers.validate_float(
      'SetMotionModelParams.slipFactor', value, 'f')

  def __init__(self, slipFactor=0.0):
    self.slipFactor = slipFactor

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetMotionModelParams from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetMotionModelParams.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 SetMotionModelParams from the given BinaryReader."
    _slipFactor = reader.read('f')
    return cls(_slipFactor)

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

  def pack_to(self, writer):
    "Writes the current SetMotionModelParams to the given BinaryWriter."
    writer.write(self._slipFactor, 'f')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._slipFactor == other._slipFactor
    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._slipFactor, 'f'))

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

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

Anki.Vector.ExternalInterface.SetMotionModelParams = SetMotionModelParams
del SetMotionModelParams


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

  __slots__ = (
    '_volume', # float_32
  )

  @property
  def volume(self):
    "float_32 volume struct property."
    return self._volume

  @volume.setter
  def volume(self, value):
    self._volume = msgbuffers.validate_float(
      'SetRobotVolume.volume', value, 'f')

  def __init__(self, volume=0.0):
    self.volume = volume

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetRobotVolume from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetRobotVolume.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 SetRobotVolume from the given BinaryReader."
    _volume = reader.read('f')
    return cls(_volume)

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

  def pack_to(self, writer):
    "Writes the current SetRobotVolume to the given BinaryWriter."
    writer.write(self._volume, 'f')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._volume == other._volume
    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._volume, 'f'))

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

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

Anki.Vector.ExternalInterface.SetRobotVolume = SetRobotVolume
del SetRobotVolume


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ForceDelocalizeRobot from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ForceDelocalizeRobot.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 ForceDelocalizeRobot from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current ForceDelocalizeRobot 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.ForceDelocalizeRobot = ForceDelocalizeRobot
del ForceDelocalizeRobot


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

  __slots__ = (
    '_actionType', # Anki.Vector.RobotActionType
  )

  @property
  def actionType(self):
    "Anki.Vector.RobotActionType actionType struct property."
    return self._actionType

  @actionType.setter
  def actionType(self, value):
    self._actionType = msgbuffers.validate_integer(
      'CancelAction.actionType', value, -2147483648, 2147483647)

  def __init__(self, actionType=Anki.Vector.RobotActionType.COMPOUND):
    self.actionType = actionType

  @classmethod
  def unpack(cls, buffer):
    "Reads a new CancelAction from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('CancelAction.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 CancelAction from the given BinaryReader."
    _actionType = reader.read('i')
    return cls(_actionType)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._actionType == other._actionType
    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._actionType, 'i'))

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

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

Anki.Vector.ExternalInterface.CancelAction = CancelAction
del CancelAction


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

  __slots__ = (
    '_idTag', # uint_32
  )

  @property
  def idTag(self):
    "uint_32 idTag struct property."
    return self._idTag

  @idTag.setter
  def idTag(self, value):
    self._idTag = msgbuffers.validate_integer(
      'CancelActionByIdTag.idTag', value, 0, 4294967295)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new CancelActionByIdTag from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('CancelActionByIdTag.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 CancelActionByIdTag from the given BinaryReader."
    _idTag = reader.read('I')
    return cls(_idTag)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._idTag == other._idTag
    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._idTag, 'I'))

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

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

Anki.Vector.ExternalInterface.CancelActionByIdTag = CancelActionByIdTag
del CancelActionByIdTag


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

  __slots__ = (
    '_idTag',      # uint_32
    '_numRetries', # uint_8
    '_position',   # Anki.Vector.QueueActionPosition
    '_action',     # Anki.Vector.ExternalInterface.RobotActionUnion
  )

  @property
  def idTag(self):
    "uint_32 idTag struct property."
    return self._idTag

  @idTag.setter
  def idTag(self, value):
    self._idTag = msgbuffers.validate_integer(
      'QueueSingleAction.idTag', value, 0, 4294967295)

  @property
  def numRetries(self):
    "uint_8 numRetries struct property."
    return self._numRetries

  @numRetries.setter
  def numRetries(self, value):
    self._numRetries = msgbuffers.validate_integer(
      'QueueSingleAction.numRetries', value, 0, 255)

  @property
  def position(self):
    "Anki.Vector.QueueActionPosition position struct property."
    return self._position

  @position.setter
  def position(self, value):
    self._position = msgbuffers.validate_integer(
      'QueueSingleAction.position', value, 0, 255)

  @property
  def action(self):
    "Anki.Vector.ExternalInterface.RobotActionUnion action struct property."
    return self._action

  @action.setter
  def action(self, value):
    self._action = msgbuffers.validate_object(
      'QueueSingleAction.action', value, Anki.Vector.ExternalInterface.RobotActionUnion)

  def __init__(self, idTag=0, numRetries=0, position=Anki.Vector.QueueActionPosition.NOW, action=Anki.Vector.ExternalInterface.RobotActionUnion()):
    self.idTag = idTag
    self.numRetries = numRetries
    self.position = position
    self.action = action

  @classmethod
  def unpack(cls, buffer):
    "Reads a new QueueSingleAction from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('QueueSingleAction.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 QueueSingleAction from the given BinaryReader."
    _idTag = reader.read('I')
    _numRetries = reader.read('B')
    _position = reader.read('B')
    _action = reader.read_object(Anki.Vector.ExternalInterface.RobotActionUnion.unpack_from)
    return cls(_idTag, _numRetries, _position, _action)

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

  def pack_to(self, writer):
    "Writes the current QueueSingleAction to the given BinaryWriter."
    writer.write(self._idTag, 'I')
    writer.write(self._numRetries, 'B')
    writer.write(self._position, 'B')
    writer.write_object(self._action)

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._idTag == other._idTag and
        self._numRetries == other._numRetries and
        self._position == other._position and
        self._action == other._action)
    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._idTag, 'I') +
      msgbuffers.size(self._numRetries, 'B') +
      msgbuffers.size(self._position, 'B') +
      msgbuffers.size_object(self._action))

  def __str__(self):
    return '{type}(idTag={idTag}, numRetries={numRetries}, position={position}, action={action})'.format(
      type=type(self).__name__,
      idTag=self._idTag,
      numRetries=self._numRetries,
      position=self._position,
      action=self._action)

  def __repr__(self):
    return '{type}(idTag={idTag}, numRetries={numRetries}, position={position}, action={action})'.format(
      type=type(self).__name__,
      idTag=repr(self._idTag),
      numRetries=repr(self._numRetries),
      position=repr(self._position),
      action=repr(self._action))

Anki.Vector.ExternalInterface.QueueSingleAction = QueueSingleAction
del QueueSingleAction


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

  __slots__ = (
    '_idTag',      # uint_32
    '_numRetries', # uint_8
    '_parallel',   # bool
    '_position',   # Anki.Vector.QueueActionPosition
    '_actions',    # RobotActionUnion[uint_8]
  )

  @property
  def idTag(self):
    "uint_32 idTag struct property."
    return self._idTag

  @idTag.setter
  def idTag(self, value):
    self._idTag = msgbuffers.validate_integer(
      'QueueCompoundAction.idTag', value, 0, 4294967295)

  @property
  def numRetries(self):
    "uint_8 numRetries struct property."
    return self._numRetries

  @numRetries.setter
  def numRetries(self, value):
    self._numRetries = msgbuffers.validate_integer(
      'QueueCompoundAction.numRetries', value, 0, 255)

  @property
  def parallel(self):
    "bool parallel struct property."
    return self._parallel

  @parallel.setter
  def parallel(self, value):
    self._parallel = msgbuffers.validate_bool(
      'QueueCompoundAction.parallel', value)

  @property
  def position(self):
    "Anki.Vector.QueueActionPosition position struct property."
    return self._position

  @position.setter
  def position(self, value):
    self._position = msgbuffers.validate_integer(
      'QueueCompoundAction.position', value, 0, 255)

  @property
  def actions(self):
    "RobotActionUnion[uint_8] actions struct property."
    return self._actions

  @actions.setter
  def actions(self, value):
    self._actions = msgbuffers.validate_varray(
      'QueueCompoundAction.actions', value, 255,
      lambda name, value_inner: msgbuffers.validate_object(
        name, value_inner, Anki.Vector.ExternalInterface.RobotActionUnion))

  def __init__(self, idTag=0, numRetries=0, parallel=False, position=Anki.Vector.QueueActionPosition.NOW, actions=()):
    self.idTag = idTag
    self.numRetries = numRetries
    self.parallel = parallel
    self.position = position
    self.actions = actions

  @classmethod
  def unpack(cls, buffer):
    "Reads a new QueueCompoundAction from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('QueueCompoundAction.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 QueueCompoundAction from the given BinaryReader."
    _idTag = reader.read('I')
    _numRetries = reader.read('B')
    _parallel = bool(reader.read('b'))
    _position = reader.read('B')
    _actions = reader.read_object_varray(Anki.Vector.ExternalInterface.RobotActionUnion.unpack_from, 'B')
    return cls(_idTag, _numRetries, _parallel, _position, _actions)

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

  def pack_to(self, writer):
    "Writes the current QueueCompoundAction to the given BinaryWriter."
    writer.write(self._idTag, 'I')
    writer.write(self._numRetries, 'B')
    writer.write(int(self._parallel), 'b')
    writer.write(self._position, 'B')
    writer.write_object_varray(self._actions, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._idTag == other._idTag and
        self._numRetries == other._numRetries and
        self._parallel == other._parallel and
        self._position == other._position and
        self._actions == other._actions)
    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._idTag, 'I') +
      msgbuffers.size(self._numRetries, 'B') +
      msgbuffers.size(self._parallel, 'b') +
      msgbuffers.size(self._position, 'B') +
      msgbuffers.size_object_varray(self._actions, 'B'))

  def __str__(self):
    return '{type}(idTag={idTag}, numRetries={numRetries}, parallel={parallel}, position={position}, actions={actions})'.format(
      type=type(self).__name__,
      idTag=self._idTag,
      numRetries=self._numRetries,
      parallel=self._parallel,
      position=self._position,
      actions=msgbuffers.shorten_sequence(self._actions))

  def __repr__(self):
    return '{type}(idTag={idTag}, numRetries={numRetries}, parallel={parallel}, position={position}, actions={actions})'.format(
      type=type(self).__name__,
      idTag=repr(self._idTag),
      numRetries=repr(self._numRetries),
      parallel=repr(self._parallel),
      position=repr(self._position),
      actions=repr(self._actions))

Anki.Vector.ExternalInterface.QueueCompoundAction = QueueCompoundAction
del QueueCompoundAction


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

  __slots__ = (
    '_ipAddr', # uint_32
  )

  @property
  def ipAddr(self):
    "uint_32 ipAddr struct property."
    return self._ipAddr

  @ipAddr.setter
  def ipAddr(self, value):
    self._ipAddr = msgbuffers.validate_integer(
      'RedirectViz.ipAddr', value, 0, 4294967295)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RedirectViz from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RedirectViz.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 RedirectViz from the given BinaryReader."
    _ipAddr = reader.read('I')
    return cls(_ipAddr)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._ipAddr == other._ipAddr
    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._ipAddr, 'I'))

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

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

Anki.Vector.ExternalInterface.RedirectViz = RedirectViz
del RedirectViz


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

  __slots__ = (
    '_mode', # Anki.Vector.ImageSendMode
  )

  @property
  def mode(self):
    "Anki.Vector.ImageSendMode mode struct property."
    return self._mode

  @mode.setter
  def mode(self, value):
    self._mode = msgbuffers.validate_integer(
      'ImageRequest.mode', value, 0, 255)

  def __init__(self, mode=Anki.Vector.ImageSendMode.Off):
    self.mode = mode

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ImageRequest from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ImageRequest.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 ImageRequest from the given BinaryReader."
    _mode = reader.read('B')
    return cls(_mode)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._mode == other._mode
    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._mode, 'B'))

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

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

Anki.Vector.ExternalInterface.ImageRequest = ImageRequest
del ImageRequest


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

  __slots__ = (
    '_mode',                   # Anki.Vector.ImageSendMode
    '_qualityOnRobot',         # int_8
    '_removeRadialDistortion', # bool
    '_path',                   # string[uint_8]
  )

  @property
  def mode(self):
    "Anki.Vector.ImageSendMode mode struct property."
    return self._mode

  @mode.setter
  def mode(self, value):
    self._mode = msgbuffers.validate_integer(
      'SaveImages.mode', value, 0, 255)

  @property
  def qualityOnRobot(self):
    "int_8 qualityOnRobot struct property."
    return self._qualityOnRobot

  @qualityOnRobot.setter
  def qualityOnRobot(self, value):
    self._qualityOnRobot = msgbuffers.validate_integer(
      'SaveImages.qualityOnRobot', value, -128, 127)

  @property
  def removeRadialDistortion(self):
    "bool removeRadialDistortion struct property."
    return self._removeRadialDistortion

  @removeRadialDistortion.setter
  def removeRadialDistortion(self, value):
    self._removeRadialDistortion = msgbuffers.validate_bool(
      'SaveImages.removeRadialDistortion', value)

  @property
  def path(self):
    "string[uint_8] path struct property."
    return self._path

  @path.setter
  def path(self, value):
    self._path = msgbuffers.validate_string(
      'SaveImages.path', value, 255)

  def __init__(self, mode=Anki.Vector.ImageSendMode.Off, qualityOnRobot=0, removeRadialDistortion=False, path=''):
    self.mode = mode
    self.qualityOnRobot = qualityOnRobot
    self.removeRadialDistortion = removeRadialDistortion
    self.path = path

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SaveImages from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SaveImages.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 SaveImages from the given BinaryReader."
    _mode = reader.read('B')
    _qualityOnRobot = reader.read('b')
    _removeRadialDistortion = bool(reader.read('b'))
    _path = reader.read_string('B')
    return cls(_mode, _qualityOnRobot, _removeRadialDistortion, _path)

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

  def pack_to(self, writer):
    "Writes the current SaveImages to the given BinaryWriter."
    writer.write(self._mode, 'B')
    writer.write(self._qualityOnRobot, 'b')
    writer.write(int(self._removeRadialDistortion), 'b')
    writer.write_string(self._path, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._mode == other._mode and
        self._qualityOnRobot == other._qualityOnRobot and
        self._removeRadialDistortion == other._removeRadialDistortion and
        self._path == other._path)
    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._mode, 'B') +
      msgbuffers.size(self._qualityOnRobot, 'b') +
      msgbuffers.size(self._removeRadialDistortion, 'b') +
      msgbuffers.size_string(self._path, 'B'))

  def __str__(self):
    return '{type}(mode={mode}, qualityOnRobot={qualityOnRobot}, removeRadialDistortion={removeRadialDistortion}, path={path})'.format(
      type=type(self).__name__,
      mode=self._mode,
      qualityOnRobot=self._qualityOnRobot,
      removeRadialDistortion=self._removeRadialDistortion,
      path=msgbuffers.shorten_string(self._path))

  def __repr__(self):
    return '{type}(mode={mode}, qualityOnRobot={qualityOnRobot}, removeRadialDistortion={removeRadialDistortion}, path={path})'.format(
      type=type(self).__name__,
      mode=repr(self._mode),
      qualityOnRobot=repr(self._qualityOnRobot),
      removeRadialDistortion=repr(self._removeRadialDistortion),
      path=repr(self._path))

Anki.Vector.ExternalInterface.SaveImages = SaveImages
del SaveImages


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

  __slots__ = (
    '_enable', # bool
  )

  @property
  def enable(self):
    "bool enable struct property."
    return self._enable

  @enable.setter
  def enable(self, value):
    self._enable = msgbuffers.validate_bool(
      'EnableColorImages.enable', value)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new EnableColorImages from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('EnableColorImages.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 EnableColorImages from the given BinaryReader."
    _enable = bool(reader.read('b'))
    return cls(_enable)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._enable == other._enable
    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._enable, 'b'))

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

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

Anki.Vector.ExternalInterface.EnableColorImages = EnableColorImages
del EnableColorImages


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

  __slots__ = (
    '_enabled', # bool
    '_path',    # string[uint_8]
  )

  @property
  def enabled(self):
    "bool enabled struct property."
    return self._enabled

  @enabled.setter
  def enabled(self, value):
    self._enabled = msgbuffers.validate_bool(
      'SaveRobotState.enabled', value)

  @property
  def path(self):
    "string[uint_8] path struct property."
    return self._path

  @path.setter
  def path(self, value):
    self._path = msgbuffers.validate_string(
      'SaveRobotState.path', value, 255)

  def __init__(self, enabled=False, path=''):
    self.enabled = enabled
    self.path = path

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SaveRobotState from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SaveRobotState.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 SaveRobotState from the given BinaryReader."
    _enabled = bool(reader.read('b'))
    _path = reader.read_string('B')
    return cls(_enabled, _path)

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

  def pack_to(self, writer):
    "Writes the current SaveRobotState to the given BinaryWriter."
    writer.write(int(self._enabled), 'b')
    writer.write_string(self._path, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._enabled == other._enabled and
        self._path == other._path)
    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._enabled, 'b') +
      msgbuffers.size_string(self._path, 'B'))

  def __str__(self):
    return '{type}(enabled={enabled}, path={path})'.format(
      type=type(self).__name__,
      enabled=self._enabled,
      path=msgbuffers.shorten_string(self._path))

  def __repr__(self):
    return '{type}(enabled={enabled}, path={path})'.format(
      type=type(self).__name__,
      enabled=repr(self._enabled),
      path=repr(self._path))

Anki.Vector.ExternalInterface.SaveRobotState = SaveRobotState
del SaveRobotState


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

  __slots__ = (
    '_enable', # uint_8
  )

  @property
  def enable(self):
    "uint_8 enable struct property."
    return self._enable

  @enable.setter
  def enable(self, value):
    self._enable = msgbuffers.validate_integer(
      'EnableDisplay.enable', value, 0, 255)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new EnableDisplay from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('EnableDisplay.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 EnableDisplay from the given BinaryReader."
    _enable = reader.read('B')
    return cls(_enable)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._enable == other._enable
    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._enable, 'B'))

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

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

Anki.Vector.ExternalInterface.EnableDisplay = EnableDisplay
del EnableDisplay


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

  __slots__ = (
    '_motionProf', # Anki.Vector.PathMotionProfile
  )

  @property
  def motionProf(self):
    "Anki.Vector.PathMotionProfile motionProf struct property."
    return self._motionProf

  @motionProf.setter
  def motionProf(self, value):
    self._motionProf = msgbuffers.validate_object(
      'ExecuteTestPlan.motionProf', value, Anki.Vector.PathMotionProfile)

  def __init__(self, motionProf=Anki.Vector.PathMotionProfile()):
    self.motionProf = motionProf

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ExecuteTestPlan from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ExecuteTestPlan.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 ExecuteTestPlan from the given BinaryReader."
    _motionProf = reader.read_object(Anki.Vector.PathMotionProfile.unpack_from)
    return cls(_motionProf)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._motionProf == other._motionProf
    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._motionProf))

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

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

Anki.Vector.ExternalInterface.ExecuteTestPlan = ExecuteTestPlan
del ExecuteTestPlan


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SelectNextObject from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SelectNextObject.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 SelectNextObject from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current SelectNextObject 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.SelectNextObject = SelectNextObject
del SelectNextObject


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

  __slots__ = (
    '_objectID', # int_32
  )

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

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

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetRobotCarryingObject from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetRobotCarryingObject.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 SetRobotCarryingObject from the given BinaryReader."
    _objectID = reader.read('i')
    return cls(_objectID)

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

  def pack_to(self, writer):
    "Writes the current SetRobotCarryingObject 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.SetRobotCarryingObject = SetRobotCarryingObject
del SetRobotCarryingObject


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new DeleteAllCustomObjects from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('DeleteAllCustomObjects.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 DeleteAllCustomObjects from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current DeleteAllCustomObjects 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.DeleteAllCustomObjects = DeleteAllCustomObjects
del DeleteAllCustomObjects


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new DeleteCustomMarkerObjects from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('DeleteCustomMarkerObjects.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 DeleteCustomMarkerObjects from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current DeleteCustomMarkerObjects 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.DeleteCustomMarkerObjects = DeleteCustomMarkerObjects
del DeleteCustomMarkerObjects


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new DeleteFixedCustomObjects from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('DeleteFixedCustomObjects.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 DeleteFixedCustomObjects from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current DeleteFixedCustomObjects 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.DeleteFixedCustomObjects = DeleteFixedCustomObjects
del DeleteFixedCustomObjects


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new UndefineAllCustomMarkerObjects from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('UndefineAllCustomMarkerObjects.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 UndefineAllCustomMarkerObjects from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current UndefineAllCustomMarkerObjects 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.UndefineAllCustomMarkerObjects = UndefineAllCustomMarkerObjects
del UndefineAllCustomMarkerObjects


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

  __slots__ = (
    '_pose',     # Anki.PoseStruct3d
    '_xSize_mm', # float_32
    '_ySize_mm', # float_32
    '_zSize_mm', # float_32
  )

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

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

  @property
  def xSize_mm(self):
    "float_32 xSize_mm struct property."
    return self._xSize_mm

  @xSize_mm.setter
  def xSize_mm(self, value):
    self._xSize_mm = msgbuffers.validate_float(
      'CreateFixedCustomObject.xSize_mm', value, 'f')

  @property
  def ySize_mm(self):
    "float_32 ySize_mm struct property."
    return self._ySize_mm

  @ySize_mm.setter
  def ySize_mm(self, value):
    self._ySize_mm = msgbuffers.validate_float(
      'CreateFixedCustomObject.ySize_mm', value, 'f')

  @property
  def zSize_mm(self):
    "float_32 zSize_mm struct property."
    return self._zSize_mm

  @zSize_mm.setter
  def zSize_mm(self, value):
    self._zSize_mm = msgbuffers.validate_float(
      'CreateFixedCustomObject.zSize_mm', value, 'f')

  def __init__(self, pose=Anki.PoseStruct3d(), xSize_mm=0.0, ySize_mm=0.0, zSize_mm=0.0):
    self.pose = pose
    self.xSize_mm = xSize_mm
    self.ySize_mm = ySize_mm
    self.zSize_mm = zSize_mm

  @classmethod
  def unpack(cls, buffer):
    "Reads a new CreateFixedCustomObject from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('CreateFixedCustomObject.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 CreateFixedCustomObject from the given BinaryReader."
    _pose = reader.read_object(Anki.PoseStruct3d.unpack_from)
    _xSize_mm = reader.read('f')
    _ySize_mm = reader.read('f')
    _zSize_mm = reader.read('f')
    return cls(_pose, _xSize_mm, _ySize_mm, _zSize_mm)

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

  def pack_to(self, writer):
    "Writes the current CreateFixedCustomObject to the given BinaryWriter."
    writer.write_object(self._pose)
    writer.write(self._xSize_mm, 'f')
    writer.write(self._ySize_mm, 'f')
    writer.write(self._zSize_mm, 'f')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._pose == other._pose and
        self._xSize_mm == other._xSize_mm and
        self._ySize_mm == other._ySize_mm and
        self._zSize_mm == other._zSize_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_object(self._pose) +
      msgbuffers.size(self._xSize_mm, 'f') +
      msgbuffers.size(self._ySize_mm, 'f') +
      msgbuffers.size(self._zSize_mm, 'f'))

  def __str__(self):
    return '{type}(pose={pose}, xSize_mm={xSize_mm}, ySize_mm={ySize_mm}, zSize_mm={zSize_mm})'.format(
      type=type(self).__name__,
      pose=self._pose,
      xSize_mm=self._xSize_mm,
      ySize_mm=self._ySize_mm,
      zSize_mm=self._zSize_mm)

  def __repr__(self):
    return '{type}(pose={pose}, xSize_mm={xSize_mm}, ySize_mm={ySize_mm}, zSize_mm={zSize_mm})'.format(
      type=type(self).__name__,
      pose=repr(self._pose),
      xSize_mm=repr(self._xSize_mm),
      ySize_mm=repr(self._ySize_mm),
      zSize_mm=repr(self._zSize_mm))

Anki.Vector.ExternalInterface.CreateFixedCustomObject = CreateFixedCustomObject
del CreateFixedCustomObject


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

  __slots__ = (
    '_customType',      # Anki.Vector.ObjectType
    '_markerFront',     # Anki.Vector.CustomObjectMarker
    '_markerBack',      # Anki.Vector.CustomObjectMarker
    '_markerTop',       # Anki.Vector.CustomObjectMarker
    '_markerBottom',    # Anki.Vector.CustomObjectMarker
    '_markerLeft',      # Anki.Vector.CustomObjectMarker
    '_markerRight',     # Anki.Vector.CustomObjectMarker
    '_xSize_mm',        # float_32
    '_ySize_mm',        # float_32
    '_zSize_mm',        # float_32
    '_markerWidth_mm',  # float_32
    '_markerHeight_mm', # float_32
    '_isUnique',        # bool
  )

  @property
  def customType(self):
    "Anki.Vector.ObjectType customType struct property."
    return self._customType

  @customType.setter
  def customType(self, value):
    self._customType = msgbuffers.validate_integer(
      'DefineCustomBox.customType', value, -2147483648, 2147483647)

  @property
  def markerFront(self):
    "Anki.Vector.CustomObjectMarker markerFront struct property."
    return self._markerFront

  @markerFront.setter
  def markerFront(self, value):
    self._markerFront = msgbuffers.validate_integer(
      'DefineCustomBox.markerFront', value, -32768, 32767)

  @property
  def markerBack(self):
    "Anki.Vector.CustomObjectMarker markerBack struct property."
    return self._markerBack

  @markerBack.setter
  def markerBack(self, value):
    self._markerBack = msgbuffers.validate_integer(
      'DefineCustomBox.markerBack', value, -32768, 32767)

  @property
  def markerTop(self):
    "Anki.Vector.CustomObjectMarker markerTop struct property."
    return self._markerTop

  @markerTop.setter
  def markerTop(self, value):
    self._markerTop = msgbuffers.validate_integer(
      'DefineCustomBox.markerTop', value, -32768, 32767)

  @property
  def markerBottom(self):
    "Anki.Vector.CustomObjectMarker markerBottom struct property."
    return self._markerBottom

  @markerBottom.setter
  def markerBottom(self, value):
    self._markerBottom = msgbuffers.validate_integer(
      'DefineCustomBox.markerBottom', value, -32768, 32767)

  @property
  def markerLeft(self):
    "Anki.Vector.CustomObjectMarker markerLeft struct property."
    return self._markerLeft

  @markerLeft.setter
  def markerLeft(self, value):
    self._markerLeft = msgbuffers.validate_integer(
      'DefineCustomBox.markerLeft', value, -32768, 32767)

  @property
  def markerRight(self):
    "Anki.Vector.CustomObjectMarker markerRight struct property."
    return self._markerRight

  @markerRight.setter
  def markerRight(self, value):
    self._markerRight = msgbuffers.validate_integer(
      'DefineCustomBox.markerRight', value, -32768, 32767)

  @property
  def xSize_mm(self):
    "float_32 xSize_mm struct property."
    return self._xSize_mm

  @xSize_mm.setter
  def xSize_mm(self, value):
    self._xSize_mm = msgbuffers.validate_float(
      'DefineCustomBox.xSize_mm', value, 'f')

  @property
  def ySize_mm(self):
    "float_32 ySize_mm struct property."
    return self._ySize_mm

  @ySize_mm.setter
  def ySize_mm(self, value):
    self._ySize_mm = msgbuffers.validate_float(
      'DefineCustomBox.ySize_mm', value, 'f')

  @property
  def zSize_mm(self):
    "float_32 zSize_mm struct property."
    return self._zSize_mm

  @zSize_mm.setter
  def zSize_mm(self, value):
    self._zSize_mm = msgbuffers.validate_float(
      'DefineCustomBox.zSize_mm', value, 'f')

  @property
  def markerWidth_mm(self):
    "float_32 markerWidth_mm struct property."
    return self._markerWidth_mm

  @markerWidth_mm.setter
  def markerWidth_mm(self, value):
    self._markerWidth_mm = msgbuffers.validate_float(
      'DefineCustomBox.markerWidth_mm', value, 'f')

  @property
  def markerHeight_mm(self):
    "float_32 markerHeight_mm struct property."
    return self._markerHeight_mm

  @markerHeight_mm.setter
  def markerHeight_mm(self, value):
    self._markerHeight_mm = msgbuffers.validate_float(
      'DefineCustomBox.markerHeight_mm', value, 'f')

  @property
  def isUnique(self):
    "bool isUnique struct property."
    return self._isUnique

  @isUnique.setter
  def isUnique(self, value):
    self._isUnique = msgbuffers.validate_bool(
      'DefineCustomBox.isUnique', value)

  def __init__(self, customType=Anki.Vector.ObjectType.UnknownObject, markerFront=Anki.Vector.CustomObjectMarker.Circles2, markerBack=Anki.Vector.CustomObjectMarker.Circles2, markerTop=Anki.Vector.CustomObjectMarker.Circles2, markerBottom=Anki.Vector.CustomObjectMarker.Circles2, markerLeft=Anki.Vector.CustomObjectMarker.Circles2, markerRight=Anki.Vector.CustomObjectMarker.Circles2, xSize_mm=0.0, ySize_mm=0.0, zSize_mm=0.0, markerWidth_mm=0.0, markerHeight_mm=0.0, isUnique=False):
    self.customType = customType
    self.markerFront = markerFront
    self.markerBack = markerBack
    self.markerTop = markerTop
    self.markerBottom = markerBottom
    self.markerLeft = markerLeft
    self.markerRight = markerRight
    self.xSize_mm = xSize_mm
    self.ySize_mm = ySize_mm
    self.zSize_mm = zSize_mm
    self.markerWidth_mm = markerWidth_mm
    self.markerHeight_mm = markerHeight_mm
    self.isUnique = isUnique

  @classmethod
  def unpack(cls, buffer):
    "Reads a new DefineCustomBox from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('DefineCustomBox.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 DefineCustomBox from the given BinaryReader."
    _customType = reader.read('i')
    _markerFront = reader.read('h')
    _markerBack = reader.read('h')
    _markerTop = reader.read('h')
    _markerBottom = reader.read('h')
    _markerLeft = reader.read('h')
    _markerRight = reader.read('h')
    _xSize_mm = reader.read('f')
    _ySize_mm = reader.read('f')
    _zSize_mm = reader.read('f')
    _markerWidth_mm = reader.read('f')
    _markerHeight_mm = reader.read('f')
    _isUnique = bool(reader.read('b'))
    return cls(_customType, _markerFront, _markerBack, _markerTop, _markerBottom, _markerLeft, _markerRight, _xSize_mm, _ySize_mm, _zSize_mm, _markerWidth_mm, _markerHeight_mm, _isUnique)

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

  def pack_to(self, writer):
    "Writes the current DefineCustomBox to the given BinaryWriter."
    writer.write(self._customType, 'i')
    writer.write(self._markerFront, 'h')
    writer.write(self._markerBack, 'h')
    writer.write(self._markerTop, 'h')
    writer.write(self._markerBottom, 'h')
    writer.write(self._markerLeft, 'h')
    writer.write(self._markerRight, 'h')
    writer.write(self._xSize_mm, 'f')
    writer.write(self._ySize_mm, 'f')
    writer.write(self._zSize_mm, 'f')
    writer.write(self._markerWidth_mm, 'f')
    writer.write(self._markerHeight_mm, 'f')
    writer.write(int(self._isUnique), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._customType == other._customType and
        self._markerFront == other._markerFront and
        self._markerBack == other._markerBack and
        self._markerTop == other._markerTop and
        self._markerBottom == other._markerBottom and
        self._markerLeft == other._markerLeft and
        self._markerRight == other._markerRight and
        self._xSize_mm == other._xSize_mm and
        self._ySize_mm == other._ySize_mm and
        self._zSize_mm == other._zSize_mm and
        self._markerWidth_mm == other._markerWidth_mm and
        self._markerHeight_mm == other._markerHeight_mm and
        self._isUnique == other._isUnique)
    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._customType, 'i') +
      msgbuffers.size(self._markerFront, 'h') +
      msgbuffers.size(self._markerBack, 'h') +
      msgbuffers.size(self._markerTop, 'h') +
      msgbuffers.size(self._markerBottom, 'h') +
      msgbuffers.size(self._markerLeft, 'h') +
      msgbuffers.size(self._markerRight, 'h') +
      msgbuffers.size(self._xSize_mm, 'f') +
      msgbuffers.size(self._ySize_mm, 'f') +
      msgbuffers.size(self._zSize_mm, 'f') +
      msgbuffers.size(self._markerWidth_mm, 'f') +
      msgbuffers.size(self._markerHeight_mm, 'f') +
      msgbuffers.size(self._isUnique, 'b'))

  def __str__(self):
    return '{type}(customType={customType}, markerFront={markerFront}, markerBack={markerBack}, markerTop={markerTop}, markerBottom={markerBottom}, markerLeft={markerLeft}, markerRight={markerRight}, xSize_mm={xSize_mm}, ySize_mm={ySize_mm}, zSize_mm={zSize_mm}, markerWidth_mm={markerWidth_mm}, markerHeight_mm={markerHeight_mm}, isUnique={isUnique})'.format(
      type=type(self).__name__,
      customType=self._customType,
      markerFront=self._markerFront,
      markerBack=self._markerBack,
      markerTop=self._markerTop,
      markerBottom=self._markerBottom,
      markerLeft=self._markerLeft,
      markerRight=self._markerRight,
      xSize_mm=self._xSize_mm,
      ySize_mm=self._ySize_mm,
      zSize_mm=self._zSize_mm,
      markerWidth_mm=self._markerWidth_mm,
      markerHeight_mm=self._markerHeight_mm,
      isUnique=self._isUnique)

  def __repr__(self):
    return '{type}(customType={customType}, markerFront={markerFront}, markerBack={markerBack}, markerTop={markerTop}, markerBottom={markerBottom}, markerLeft={markerLeft}, markerRight={markerRight}, xSize_mm={xSize_mm}, ySize_mm={ySize_mm}, zSize_mm={zSize_mm}, markerWidth_mm={markerWidth_mm}, markerHeight_mm={markerHeight_mm}, isUnique={isUnique})'.format(
      type=type(self).__name__,
      customType=repr(self._customType),
      markerFront=repr(self._markerFront),
      markerBack=repr(self._markerBack),
      markerTop=repr(self._markerTop),
      markerBottom=repr(self._markerBottom),
      markerLeft=repr(self._markerLeft),
      markerRight=repr(self._markerRight),
      xSize_mm=repr(self._xSize_mm),
      ySize_mm=repr(self._ySize_mm),
      zSize_mm=repr(self._zSize_mm),
      markerWidth_mm=repr(self._markerWidth_mm),
      markerHeight_mm=repr(self._markerHeight_mm),
      isUnique=repr(self._isUnique))

Anki.Vector.ExternalInterface.DefineCustomBox = DefineCustomBox
del DefineCustomBox


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

  __slots__ = (
    '_customType',      # Anki.Vector.ObjectType
    '_marker',          # Anki.Vector.CustomObjectMarker
    '_size_mm',         # float_32
    '_markerWidth_mm',  # float_32
    '_markerHeight_mm', # float_32
    '_isUnique',        # bool
  )

  @property
  def customType(self):
    "Anki.Vector.ObjectType customType struct property."
    return self._customType

  @customType.setter
  def customType(self, value):
    self._customType = msgbuffers.validate_integer(
      'DefineCustomCube.customType', value, -2147483648, 2147483647)

  @property
  def marker(self):
    "Anki.Vector.CustomObjectMarker marker struct property."
    return self._marker

  @marker.setter
  def marker(self, value):
    self._marker = msgbuffers.validate_integer(
      'DefineCustomCube.marker', value, -32768, 32767)

  @property
  def size_mm(self):
    "float_32 size_mm struct property."
    return self._size_mm

  @size_mm.setter
  def size_mm(self, value):
    self._size_mm = msgbuffers.validate_float(
      'DefineCustomCube.size_mm', value, 'f')

  @property
  def markerWidth_mm(self):
    "float_32 markerWidth_mm struct property."
    return self._markerWidth_mm

  @markerWidth_mm.setter
  def markerWidth_mm(self, value):
    self._markerWidth_mm = msgbuffers.validate_float(
      'DefineCustomCube.markerWidth_mm', value, 'f')

  @property
  def markerHeight_mm(self):
    "float_32 markerHeight_mm struct property."
    return self._markerHeight_mm

  @markerHeight_mm.setter
  def markerHeight_mm(self, value):
    self._markerHeight_mm = msgbuffers.validate_float(
      'DefineCustomCube.markerHeight_mm', value, 'f')

  @property
  def isUnique(self):
    "bool isUnique struct property."
    return self._isUnique

  @isUnique.setter
  def isUnique(self, value):
    self._isUnique = msgbuffers.validate_bool(
      'DefineCustomCube.isUnique', value)

  def __init__(self, customType=Anki.Vector.ObjectType.UnknownObject, marker=Anki.Vector.CustomObjectMarker.Circles2, size_mm=0.0, markerWidth_mm=0.0, markerHeight_mm=0.0, isUnique=False):
    self.customType = customType
    self.marker = marker
    self.size_mm = size_mm
    self.markerWidth_mm = markerWidth_mm
    self.markerHeight_mm = markerHeight_mm
    self.isUnique = isUnique

  @classmethod
  def unpack(cls, buffer):
    "Reads a new DefineCustomCube from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('DefineCustomCube.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 DefineCustomCube from the given BinaryReader."
    _customType = reader.read('i')
    _marker = reader.read('h')
    _size_mm = reader.read('f')
    _markerWidth_mm = reader.read('f')
    _markerHeight_mm = reader.read('f')
    _isUnique = bool(reader.read('b'))
    return cls(_customType, _marker, _size_mm, _markerWidth_mm, _markerHeight_mm, _isUnique)

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

  def pack_to(self, writer):
    "Writes the current DefineCustomCube to the given BinaryWriter."
    writer.write(self._customType, 'i')
    writer.write(self._marker, 'h')
    writer.write(self._size_mm, 'f')
    writer.write(self._markerWidth_mm, 'f')
    writer.write(self._markerHeight_mm, 'f')
    writer.write(int(self._isUnique), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._customType == other._customType and
        self._marker == other._marker and
        self._size_mm == other._size_mm and
        self._markerWidth_mm == other._markerWidth_mm and
        self._markerHeight_mm == other._markerHeight_mm and
        self._isUnique == other._isUnique)
    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._customType, 'i') +
      msgbuffers.size(self._marker, 'h') +
      msgbuffers.size(self._size_mm, 'f') +
      msgbuffers.size(self._markerWidth_mm, 'f') +
      msgbuffers.size(self._markerHeight_mm, 'f') +
      msgbuffers.size(self._isUnique, 'b'))

  def __str__(self):
    return '{type}(customType={customType}, marker={marker}, size_mm={size_mm}, markerWidth_mm={markerWidth_mm}, markerHeight_mm={markerHeight_mm}, isUnique={isUnique})'.format(
      type=type(self).__name__,
      customType=self._customType,
      marker=self._marker,
      size_mm=self._size_mm,
      markerWidth_mm=self._markerWidth_mm,
      markerHeight_mm=self._markerHeight_mm,
      isUnique=self._isUnique)

  def __repr__(self):
    return '{type}(customType={customType}, marker={marker}, size_mm={size_mm}, markerWidth_mm={markerWidth_mm}, markerHeight_mm={markerHeight_mm}, isUnique={isUnique})'.format(
      type=type(self).__name__,
      customType=repr(self._customType),
      marker=repr(self._marker),
      size_mm=repr(self._size_mm),
      markerWidth_mm=repr(self._markerWidth_mm),
      markerHeight_mm=repr(self._markerHeight_mm),
      isUnique=repr(self._isUnique))

Anki.Vector.ExternalInterface.DefineCustomCube = DefineCustomCube
del DefineCustomCube


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

  __slots__ = (
    '_customType',      # Anki.Vector.ObjectType
    '_marker',          # Anki.Vector.CustomObjectMarker
    '_width_mm',        # float_32
    '_height_mm',       # float_32
    '_markerWidth_mm',  # float_32
    '_markerHeight_mm', # float_32
    '_isUnique',        # bool
  )

  @property
  def customType(self):
    "Anki.Vector.ObjectType customType struct property."
    return self._customType

  @customType.setter
  def customType(self, value):
    self._customType = msgbuffers.validate_integer(
      'DefineCustomWall.customType', value, -2147483648, 2147483647)

  @property
  def marker(self):
    "Anki.Vector.CustomObjectMarker marker struct property."
    return self._marker

  @marker.setter
  def marker(self, value):
    self._marker = msgbuffers.validate_integer(
      'DefineCustomWall.marker', value, -32768, 32767)

  @property
  def width_mm(self):
    "float_32 width_mm struct property."
    return self._width_mm

  @width_mm.setter
  def width_mm(self, value):
    self._width_mm = msgbuffers.validate_float(
      'DefineCustomWall.width_mm', value, 'f')

  @property
  def height_mm(self):
    "float_32 height_mm struct property."
    return self._height_mm

  @height_mm.setter
  def height_mm(self, value):
    self._height_mm = msgbuffers.validate_float(
      'DefineCustomWall.height_mm', value, 'f')

  @property
  def markerWidth_mm(self):
    "float_32 markerWidth_mm struct property."
    return self._markerWidth_mm

  @markerWidth_mm.setter
  def markerWidth_mm(self, value):
    self._markerWidth_mm = msgbuffers.validate_float(
      'DefineCustomWall.markerWidth_mm', value, 'f')

  @property
  def markerHeight_mm(self):
    "float_32 markerHeight_mm struct property."
    return self._markerHeight_mm

  @markerHeight_mm.setter
  def markerHeight_mm(self, value):
    self._markerHeight_mm = msgbuffers.validate_float(
      'DefineCustomWall.markerHeight_mm', value, 'f')

  @property
  def isUnique(self):
    "bool isUnique struct property."
    return self._isUnique

  @isUnique.setter
  def isUnique(self, value):
    self._isUnique = msgbuffers.validate_bool(
      'DefineCustomWall.isUnique', value)

  def __init__(self, customType=Anki.Vector.ObjectType.UnknownObject, marker=Anki.Vector.CustomObjectMarker.Circles2, width_mm=0.0, height_mm=0.0, markerWidth_mm=0.0, markerHeight_mm=0.0, isUnique=False):
    self.customType = customType
    self.marker = marker
    self.width_mm = width_mm
    self.height_mm = height_mm
    self.markerWidth_mm = markerWidth_mm
    self.markerHeight_mm = markerHeight_mm
    self.isUnique = isUnique

  @classmethod
  def unpack(cls, buffer):
    "Reads a new DefineCustomWall from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('DefineCustomWall.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 DefineCustomWall from the given BinaryReader."
    _customType = reader.read('i')
    _marker = reader.read('h')
    _width_mm = reader.read('f')
    _height_mm = reader.read('f')
    _markerWidth_mm = reader.read('f')
    _markerHeight_mm = reader.read('f')
    _isUnique = bool(reader.read('b'))
    return cls(_customType, _marker, _width_mm, _height_mm, _markerWidth_mm, _markerHeight_mm, _isUnique)

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

  def pack_to(self, writer):
    "Writes the current DefineCustomWall to the given BinaryWriter."
    writer.write(self._customType, 'i')
    writer.write(self._marker, 'h')
    writer.write(self._width_mm, 'f')
    writer.write(self._height_mm, 'f')
    writer.write(self._markerWidth_mm, 'f')
    writer.write(self._markerHeight_mm, 'f')
    writer.write(int(self._isUnique), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._customType == other._customType and
        self._marker == other._marker and
        self._width_mm == other._width_mm and
        self._height_mm == other._height_mm and
        self._markerWidth_mm == other._markerWidth_mm and
        self._markerHeight_mm == other._markerHeight_mm and
        self._isUnique == other._isUnique)
    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._customType, 'i') +
      msgbuffers.size(self._marker, 'h') +
      msgbuffers.size(self._width_mm, 'f') +
      msgbuffers.size(self._height_mm, 'f') +
      msgbuffers.size(self._markerWidth_mm, 'f') +
      msgbuffers.size(self._markerHeight_mm, 'f') +
      msgbuffers.size(self._isUnique, 'b'))

  def __str__(self):
    return '{type}(customType={customType}, marker={marker}, width_mm={width_mm}, height_mm={height_mm}, markerWidth_mm={markerWidth_mm}, markerHeight_mm={markerHeight_mm}, isUnique={isUnique})'.format(
      type=type(self).__name__,
      customType=self._customType,
      marker=self._marker,
      width_mm=self._width_mm,
      height_mm=self._height_mm,
      markerWidth_mm=self._markerWidth_mm,
      markerHeight_mm=self._markerHeight_mm,
      isUnique=self._isUnique)

  def __repr__(self):
    return '{type}(customType={customType}, marker={marker}, width_mm={width_mm}, height_mm={height_mm}, markerWidth_mm={markerWidth_mm}, markerHeight_mm={markerHeight_mm}, isUnique={isUnique})'.format(
      type=type(self).__name__,
      customType=repr(self._customType),
      marker=repr(self._marker),
      width_mm=repr(self._width_mm),
      height_mm=repr(self._height_mm),
      markerWidth_mm=repr(self._markerWidth_mm),
      markerHeight_mm=repr(self._markerHeight_mm),
      isUnique=repr(self._isUnique))

Anki.Vector.ExternalInterface.DefineCustomWall = DefineCustomWall
del DefineCustomWall


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

  __slots__ = (
    '_enable', # uint_8
  )

  @property
  def enable(self):
    "uint_8 enable struct property."
    return self._enable

  @enable.setter
  def enable(self, value):
    self._enable = msgbuffers.validate_integer(
      'VisionWhileMoving.enable', value, 0, 255)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new VisionWhileMoving from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('VisionWhileMoving.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 VisionWhileMoving from the given BinaryReader."
    _enable = reader.read('B')
    return cls(_enable)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._enable == other._enable
    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._enable, 'B'))

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

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

Anki.Vector.ExternalInterface.VisionWhileMoving = VisionWhileMoving
del VisionWhileMoving


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

  __slots__ = (
    '_name',        # string[uint_8]
    '_observedID',  # int_32
    '_saveID',      # int_32
    '_saveToRobot', # bool
    '_sayName',     # bool
    '_useMusic',    # bool
  )

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

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

  @property
  def observedID(self):
    "int_32 observedID struct property."
    return self._observedID

  @observedID.setter
  def observedID(self, value):
    self._observedID = msgbuffers.validate_integer(
      'SetFaceToEnroll.observedID', value, -2147483648, 2147483647)

  @property
  def saveID(self):
    "int_32 saveID struct property."
    return self._saveID

  @saveID.setter
  def saveID(self, value):
    self._saveID = msgbuffers.validate_integer(
      'SetFaceToEnroll.saveID', value, -2147483648, 2147483647)

  @property
  def saveToRobot(self):
    "bool saveToRobot struct property."
    return self._saveToRobot

  @saveToRobot.setter
  def saveToRobot(self, value):
    self._saveToRobot = msgbuffers.validate_bool(
      'SetFaceToEnroll.saveToRobot', value)

  @property
  def sayName(self):
    "bool sayName struct property."
    return self._sayName

  @sayName.setter
  def sayName(self, value):
    self._sayName = msgbuffers.validate_bool(
      'SetFaceToEnroll.sayName', value)

  @property
  def useMusic(self):
    "bool useMusic struct property."
    return self._useMusic

  @useMusic.setter
  def useMusic(self, value):
    self._useMusic = msgbuffers.validate_bool(
      'SetFaceToEnroll.useMusic', value)

  def __init__(self, name='', observedID=0, saveID=0, saveToRobot=True, sayName=False, useMusic=False):
    self.name = name
    self.observedID = observedID
    self.saveID = saveID
    self.saveToRobot = saveToRobot
    self.sayName = sayName
    self.useMusic = useMusic

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetFaceToEnroll from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetFaceToEnroll.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 SetFaceToEnroll from the given BinaryReader."
    _name = reader.read_string('B')
    _observedID = reader.read('i')
    _saveID = reader.read('i')
    _saveToRobot = bool(reader.read('b'))
    _sayName = bool(reader.read('b'))
    _useMusic = bool(reader.read('b'))
    return cls(_name, _observedID, _saveID, _saveToRobot, _sayName, _useMusic)

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

  def pack_to(self, writer):
    "Writes the current SetFaceToEnroll to the given BinaryWriter."
    writer.write_string(self._name, 'B')
    writer.write(self._observedID, 'i')
    writer.write(self._saveID, 'i')
    writer.write(int(self._saveToRobot), 'b')
    writer.write(int(self._sayName), 'b')
    writer.write(int(self._useMusic), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._name == other._name and
        self._observedID == other._observedID and
        self._saveID == other._saveID and
        self._saveToRobot == other._saveToRobot and
        self._sayName == other._sayName and
        self._useMusic == other._useMusic)
    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') +
      msgbuffers.size(self._observedID, 'i') +
      msgbuffers.size(self._saveID, 'i') +
      msgbuffers.size(self._saveToRobot, 'b') +
      msgbuffers.size(self._sayName, 'b') +
      msgbuffers.size(self._useMusic, 'b'))

  def __str__(self):
    return '{type}(name={name}, observedID={observedID}, saveID={saveID}, saveToRobot={saveToRobot}, sayName={sayName}, useMusic={useMusic})'.format(
      type=type(self).__name__,
      name=msgbuffers.shorten_string(self._name),
      observedID=self._observedID,
      saveID=self._saveID,
      saveToRobot=self._saveToRobot,
      sayName=self._sayName,
      useMusic=self._useMusic)

  def __repr__(self):
    return '{type}(name={name}, observedID={observedID}, saveID={saveID}, saveToRobot={saveToRobot}, sayName={sayName}, useMusic={useMusic})'.format(
      type=type(self).__name__,
      name=repr(self._name),
      observedID=repr(self._observedID),
      saveID=repr(self._saveID),
      saveToRobot=repr(self._saveToRobot),
      sayName=repr(self._sayName),
      useMusic=repr(self._useMusic))

Anki.Vector.ExternalInterface.SetFaceToEnroll = SetFaceToEnroll
del SetFaceToEnroll


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new CancelFaceEnrollment from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('CancelFaceEnrollment.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 CancelFaceEnrollment from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current CancelFaceEnrollment 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.CancelFaceEnrollment = CancelFaceEnrollment
del CancelFaceEnrollment


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RequestEnrolledNames from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RequestEnrolledNames.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 RequestEnrolledNames from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current RequestEnrolledNames 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.RequestEnrolledNames = RequestEnrolledNames
del RequestEnrolledNames


class EraseEnrolledFaceByID(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(
      'EraseEnrolledFaceByID.faceID', value, -2147483648, 2147483647)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new EraseEnrolledFaceByID from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('EraseEnrolledFaceByID.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 EraseEnrolledFaceByID from the given BinaryReader."
    _faceID = reader.read('i')
    return cls(_faceID)

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

  def pack_to(self, writer):
    "Writes the current EraseEnrolledFaceByID 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.EraseEnrolledFaceByID = EraseEnrolledFaceByID
del EraseEnrolledFaceByID


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new EraseAllEnrolledFaces from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('EraseAllEnrolledFaces.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 EraseAllEnrolledFaces from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current EraseAllEnrolledFaces 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.EraseAllEnrolledFaces = EraseAllEnrolledFaces
del EraseAllEnrolledFaces


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

  __slots__ = (
    '_mode',   # Anki.Vector.VisionMode
    '_enable', # bool
  )

  @property
  def mode(self):
    "Anki.Vector.VisionMode mode struct property."
    return self._mode

  @mode.setter
  def mode(self, value):
    self._mode = msgbuffers.validate_integer(
      'EnableVisionMode.mode', value, 0, 4294967295)

  @property
  def enable(self):
    "bool enable struct property."
    return self._enable

  @enable.setter
  def enable(self, value):
    self._enable = msgbuffers.validate_bool(
      'EnableVisionMode.enable', value)

  def __init__(self, mode=Anki.Vector.VisionMode.Markers, enable=False):
    self.mode = mode
    self.enable = enable

  @classmethod
  def unpack(cls, buffer):
    "Reads a new EnableVisionMode from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('EnableVisionMode.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 EnableVisionMode from the given BinaryReader."
    _mode = reader.read('I')
    _enable = bool(reader.read('b'))
    return cls(_mode, _enable)

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

  def pack_to(self, writer):
    "Writes the current EnableVisionMode to the given BinaryWriter."
    writer.write(self._mode, 'I')
    writer.write(int(self._enable), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._mode == other._mode and
        self._enable == other._enable)
    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._mode, 'I') +
      msgbuffers.size(self._enable, 'b'))

  def __str__(self):
    return '{type}(mode={mode}, enable={enable})'.format(
      type=type(self).__name__,
      mode=self._mode,
      enable=self._enable)

  def __repr__(self):
    return '{type}(mode={mode}, enable={enable})'.format(
      type=type(self).__name__,
      mode=repr(self._mode),
      enable=repr(self._enable))

Anki.Vector.ExternalInterface.EnableVisionMode = EnableVisionMode
del EnableVisionMode


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

  __slots__ = (
    '_faceID',  # int_32
    '_oldName', # string[uint_8]
    '_newName', # 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(
      'UpdateEnrolledFaceByID.faceID', value, -2147483648, 2147483647)

  @property
  def oldName(self):
    "string[uint_8] oldName struct property."
    return self._oldName

  @oldName.setter
  def oldName(self, value):
    self._oldName = msgbuffers.validate_string(
      'UpdateEnrolledFaceByID.oldName', value, 255)

  @property
  def newName(self):
    "string[uint_8] newName struct property."
    return self._newName

  @newName.setter
  def newName(self, value):
    self._newName = msgbuffers.validate_string(
      'UpdateEnrolledFaceByID.newName', value, 255)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new UpdateEnrolledFaceByID from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('UpdateEnrolledFaceByID.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 UpdateEnrolledFaceByID from the given BinaryReader."
    _faceID = reader.read('i')
    _oldName = reader.read_string('B')
    _newName = reader.read_string('B')
    return cls(_faceID, _oldName, _newName)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._faceID == other._faceID and
        self._oldName == other._oldName and
        self._newName == other._newName)
    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._oldName, 'B') +
      msgbuffers.size_string(self._newName, 'B'))

  def __str__(self):
    return '{type}(faceID={faceID}, oldName={oldName}, newName={newName})'.format(
      type=type(self).__name__,
      faceID=self._faceID,
      oldName=msgbuffers.shorten_string(self._oldName),
      newName=msgbuffers.shorten_string(self._newName))

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

Anki.Vector.ExternalInterface.UpdateEnrolledFaceByID = UpdateEnrolledFaceByID
del UpdateEnrolledFaceByID


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

  __slots__ = (
    '_isSync', # bool
  )

  @property
  def isSync(self):
    "bool isSync struct property."
    return self._isSync

  @isSync.setter
  def isSync(self, value):
    self._isSync = msgbuffers.validate_bool(
      'VisionRunMode.isSync', value)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new VisionRunMode from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('VisionRunMode.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 VisionRunMode from the given BinaryReader."
    _isSync = bool(reader.read('b'))
    return cls(_isSync)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._isSync == other._isSync
    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._isSync, 'b'))

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

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

Anki.Vector.ExternalInterface.VisionRunMode = VisionRunMode
del VisionRunMode


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

  __slots__ = (
    '_path',           # string[uint_8]
    '_isRelativePath', # bool
  )

  @property
  def path(self):
    "string[uint_8] path struct property."
    return self._path

  @path.setter
  def path(self, value):
    self._path = msgbuffers.validate_string(
      'SaveFaceAlbumToFile.path', value, 255)

  @property
  def isRelativePath(self):
    "bool isRelativePath struct property."
    return self._isRelativePath

  @isRelativePath.setter
  def isRelativePath(self, value):
    self._isRelativePath = msgbuffers.validate_bool(
      'SaveFaceAlbumToFile.isRelativePath', value)

  def __init__(self, path='', isRelativePath=True):
    self.path = path
    self.isRelativePath = isRelativePath

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SaveFaceAlbumToFile from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SaveFaceAlbumToFile.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 SaveFaceAlbumToFile from the given BinaryReader."
    _path = reader.read_string('B')
    _isRelativePath = bool(reader.read('b'))
    return cls(_path, _isRelativePath)

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

  def pack_to(self, writer):
    "Writes the current SaveFaceAlbumToFile to the given BinaryWriter."
    writer.write_string(self._path, 'B')
    writer.write(int(self._isRelativePath), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._path == other._path and
        self._isRelativePath == other._isRelativePath)
    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._path, 'B') +
      msgbuffers.size(self._isRelativePath, 'b'))

  def __str__(self):
    return '{type}(path={path}, isRelativePath={isRelativePath})'.format(
      type=type(self).__name__,
      path=msgbuffers.shorten_string(self._path),
      isRelativePath=self._isRelativePath)

  def __repr__(self):
    return '{type}(path={path}, isRelativePath={isRelativePath})'.format(
      type=type(self).__name__,
      path=repr(self._path),
      isRelativePath=repr(self._isRelativePath))

Anki.Vector.ExternalInterface.SaveFaceAlbumToFile = SaveFaceAlbumToFile
del SaveFaceAlbumToFile


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

  __slots__ = (
    '_path',           # string[uint_8]
    '_isRelativePath', # bool
  )

  @property
  def path(self):
    "string[uint_8] path struct property."
    return self._path

  @path.setter
  def path(self, value):
    self._path = msgbuffers.validate_string(
      'LoadFaceAlbumFromFile.path', value, 255)

  @property
  def isRelativePath(self):
    "bool isRelativePath struct property."
    return self._isRelativePath

  @isRelativePath.setter
  def isRelativePath(self, value):
    self._isRelativePath = msgbuffers.validate_bool(
      'LoadFaceAlbumFromFile.isRelativePath', value)

  def __init__(self, path='', isRelativePath=True):
    self.path = path
    self.isRelativePath = isRelativePath

  @classmethod
  def unpack(cls, buffer):
    "Reads a new LoadFaceAlbumFromFile from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('LoadFaceAlbumFromFile.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 LoadFaceAlbumFromFile from the given BinaryReader."
    _path = reader.read_string('B')
    _isRelativePath = bool(reader.read('b'))
    return cls(_path, _isRelativePath)

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

  def pack_to(self, writer):
    "Writes the current LoadFaceAlbumFromFile to the given BinaryWriter."
    writer.write_string(self._path, 'B')
    writer.write(int(self._isRelativePath), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._path == other._path and
        self._isRelativePath == other._isRelativePath)
    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._path, 'B') +
      msgbuffers.size(self._isRelativePath, 'b'))

  def __str__(self):
    return '{type}(path={path}, isRelativePath={isRelativePath})'.format(
      type=type(self).__name__,
      path=msgbuffers.shorten_string(self._path),
      isRelativePath=self._isRelativePath)

  def __repr__(self):
    return '{type}(path={path}, isRelativePath={isRelativePath})'.format(
      type=type(self).__name__,
      path=repr(self._path),
      isRelativePath=repr(self._isRelativePath))

Anki.Vector.ExternalInterface.LoadFaceAlbumFromFile = LoadFaceAlbumFromFile
del LoadFaceAlbumFromFile


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

  __slots__ = (
    '_format', # Anki.Vision.ImageEncoding
  )

  @property
  def format(self):
    "Anki.Vision.ImageEncoding format struct property."
    return self._format

  @format.setter
  def format(self, value):
    self._format = msgbuffers.validate_integer(
      'SetCameraCaptureFormat.format', value, 0, 255)

  def __init__(self, format=Anki.Vision.ImageEncoding.NoneImageEncoding):
    self.format = format

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetCameraCaptureFormat from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetCameraCaptureFormat.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 SetCameraCaptureFormat from the given BinaryReader."
    _format = reader.read('B')
    return cls(_format)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._format == other._format
    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._format, 'B'))

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

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

Anki.Vector.ExternalInterface.SetCameraCaptureFormat = SetCameraCaptureFormat
del SetCameraCaptureFormat


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

  __slots__ = (
    '_enabled', # bool
  )

  @property
  def enabled(self):
    "bool enabled struct property."
    return self._enabled

  @enabled.setter
  def enabled(self, value):
    self._enabled = msgbuffers.validate_bool(
      'SetMemoryMapRenderEnabled.enabled', value)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetMemoryMapRenderEnabled from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetMemoryMapRenderEnabled.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 SetMemoryMapRenderEnabled from the given BinaryReader."
    _enabled = bool(reader.read('b'))
    return cls(_enabled)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._enabled == other._enabled
    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._enabled, 'b'))

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

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

Anki.Vector.ExternalInterface.SetMemoryMapRenderEnabled = SetMemoryMapRenderEnabled
del SetMemoryMapRenderEnabled


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

  __slots__ = (
    '_frequency', # float_32
  )

  @property
  def frequency(self):
    "float_32 frequency struct property."
    return self._frequency

  @frequency.setter
  def frequency(self, value):
    self._frequency = msgbuffers.validate_float(
      'SetMemoryMapBroadcastFrequency_sec.frequency', value, 'f')

  def __init__(self, frequency=-1.0):
    self.frequency = frequency

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetMemoryMapBroadcastFrequency_sec from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetMemoryMapBroadcastFrequency_sec.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 SetMemoryMapBroadcastFrequency_sec from the given BinaryReader."
    _frequency = reader.read('f')
    return cls(_frequency)

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

  def pack_to(self, writer):
    "Writes the current SetMemoryMapBroadcastFrequency_sec to the given BinaryWriter."
    writer.write(self._frequency, 'f')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._frequency == other._frequency
    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._frequency, 'f'))

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

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

Anki.Vector.ExternalInterface.SetMemoryMapBroadcastFrequency_sec = SetMemoryMapBroadcastFrequency_sec
del SetMemoryMapBroadcastFrequency_sec


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new FakeTriggerWordDetected from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('FakeTriggerWordDetected.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 FakeTriggerWordDetected from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current FakeTriggerWordDetected 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.FakeTriggerWordDetected = FakeTriggerWordDetected
del FakeTriggerWordDetected


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

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

  @property
  def intent(self):
    "string[uint_8] intent struct property."
    return self._intent

  @intent.setter
  def intent(self, value):
    self._intent = msgbuffers.validate_string(
      'FakeCloudIntent.intent', value, 255)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new FakeCloudIntent from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('FakeCloudIntent.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 FakeCloudIntent from the given BinaryReader."
    _intent = reader.read_string('B')
    return cls(_intent)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._intent == other._intent
    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._intent, 'B'))

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

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

Anki.Vector.ExternalInterface.FakeCloudIntent = FakeCloudIntent
del FakeCloudIntent


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

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

  @property
  def intent(self):
    "string[uint_8] intent struct property."
    return self._intent

  @intent.setter
  def intent(self, value):
    self._intent = msgbuffers.validate_string(
      'FakeUserIntent.intent', value, 255)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new FakeUserIntent from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('FakeUserIntent.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 FakeUserIntent from the given BinaryReader."
    _intent = reader.read_string('B')
    return cls(_intent)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._intent == other._intent
    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._intent, 'B'))

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

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

Anki.Vector.ExternalInterface.FakeUserIntent = FakeUserIntent
del FakeUserIntent


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

  __slots__ = (
    '_behaviorID',       # string[uint_8]
    '_numRuns',          # int_32
    '_presetConditions', # bool
  )

  @property
  def behaviorID(self):
    "string[uint_8] behaviorID struct property."
    return self._behaviorID

  @behaviorID.setter
  def behaviorID(self, value):
    self._behaviorID = msgbuffers.validate_string(
      'ExecuteBehaviorByID.behaviorID', value, 255)

  @property
  def numRuns(self):
    "int_32 numRuns struct property."
    return self._numRuns

  @numRuns.setter
  def numRuns(self, value):
    self._numRuns = msgbuffers.validate_integer(
      'ExecuteBehaviorByID.numRuns', value, -2147483648, 2147483647)

  @property
  def presetConditions(self):
    "bool presetConditions struct property."
    return self._presetConditions

  @presetConditions.setter
  def presetConditions(self, value):
    self._presetConditions = msgbuffers.validate_bool(
      'ExecuteBehaviorByID.presetConditions', value)

  def __init__(self, behaviorID='', numRuns=-1, presetConditions=False):
    self.behaviorID = behaviorID
    self.numRuns = numRuns
    self.presetConditions = presetConditions

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ExecuteBehaviorByID from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ExecuteBehaviorByID.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 ExecuteBehaviorByID from the given BinaryReader."
    _behaviorID = reader.read_string('B')
    _numRuns = reader.read('i')
    _presetConditions = bool(reader.read('b'))
    return cls(_behaviorID, _numRuns, _presetConditions)

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

  def pack_to(self, writer):
    "Writes the current ExecuteBehaviorByID to the given BinaryWriter."
    writer.write_string(self._behaviorID, 'B')
    writer.write(self._numRuns, 'i')
    writer.write(int(self._presetConditions), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._behaviorID == other._behaviorID and
        self._numRuns == other._numRuns and
        self._presetConditions == other._presetConditions)
    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._behaviorID, 'B') +
      msgbuffers.size(self._numRuns, 'i') +
      msgbuffers.size(self._presetConditions, 'b'))

  def __str__(self):
    return '{type}(behaviorID={behaviorID}, numRuns={numRuns}, presetConditions={presetConditions})'.format(
      type=type(self).__name__,
      behaviorID=msgbuffers.shorten_string(self._behaviorID),
      numRuns=self._numRuns,
      presetConditions=self._presetConditions)

  def __repr__(self):
    return '{type}(behaviorID={behaviorID}, numRuns={numRuns}, presetConditions={presetConditions})'.format(
      type=type(self).__name__,
      behaviorID=repr(self._behaviorID),
      numRuns=repr(self._numRuns),
      presetConditions=repr(self._presetConditions))

Anki.Vector.ExternalInterface.ExecuteBehaviorByID = ExecuteBehaviorByID
del ExecuteBehaviorByID


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetLiftLoadTestAsActivatable from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetLiftLoadTestAsActivatable.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 SetLiftLoadTestAsActivatable from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current SetLiftLoadTestAsActivatable 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.SetLiftLoadTestAsActivatable = SetLiftLoadTestAsActivatable
del SetLiftLoadTestAsActivatable


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new AbortPath from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('AbortPath.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 AbortPath from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current AbortPath 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.AbortPath = AbortPath
del AbortPath


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new AbortAll from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('AbortAll.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 AbortAll from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current AbortAll 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.AbortAll = AbortAll
del AbortAll


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

  __slots__ = (
    '_p1',   # int_32
    '_p2',   # int_32
    '_p3',   # int_32
    '_mode', # Anki.Vector.TestMode
  )

  @property
  def p1(self):
    "int_32 p1 struct property."
    return self._p1

  @p1.setter
  def p1(self, value):
    self._p1 = msgbuffers.validate_integer(
      'StartTestMode.p1', value, -2147483648, 2147483647)

  @property
  def p2(self):
    "int_32 p2 struct property."
    return self._p2

  @p2.setter
  def p2(self, value):
    self._p2 = msgbuffers.validate_integer(
      'StartTestMode.p2', value, -2147483648, 2147483647)

  @property
  def p3(self):
    "int_32 p3 struct property."
    return self._p3

  @p3.setter
  def p3(self, value):
    self._p3 = msgbuffers.validate_integer(
      'StartTestMode.p3', value, -2147483648, 2147483647)

  @property
  def mode(self):
    "Anki.Vector.TestMode mode struct property."
    return self._mode

  @mode.setter
  def mode(self, value):
    self._mode = msgbuffers.validate_integer(
      'StartTestMode.mode', value, 0, 255)

  def __init__(self, p1=0, p2=0, p3=0, mode=Anki.Vector.TestMode.TM_NONE):
    self.p1 = p1
    self.p2 = p2
    self.p3 = p3
    self.mode = mode

  @classmethod
  def unpack(cls, buffer):
    "Reads a new StartTestMode from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('StartTestMode.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 StartTestMode from the given BinaryReader."
    _p1 = reader.read('i')
    _p2 = reader.read('i')
    _p3 = reader.read('i')
    _mode = reader.read('B')
    return cls(_p1, _p2, _p3, _mode)

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

  def pack_to(self, writer):
    "Writes the current StartTestMode to the given BinaryWriter."
    writer.write(self._p1, 'i')
    writer.write(self._p2, 'i')
    writer.write(self._p3, 'i')
    writer.write(self._mode, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._p1 == other._p1 and
        self._p2 == other._p2 and
        self._p3 == other._p3 and
        self._mode == other._mode)
    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._p1, 'i') +
      msgbuffers.size(self._p2, 'i') +
      msgbuffers.size(self._p3, 'i') +
      msgbuffers.size(self._mode, 'B'))

  def __str__(self):
    return '{type}(p1={p1}, p2={p2}, p3={p3}, mode={mode})'.format(
      type=type(self).__name__,
      p1=self._p1,
      p2=self._p2,
      p3=self._p3,
      mode=self._mode)

  def __repr__(self):
    return '{type}(p1={p1}, p2={p2}, p3={p3}, mode={mode})'.format(
      type=type(self).__name__,
      p1=repr(self._p1),
      p2=repr(self._p2),
      p3=repr(self._p3),
      mode=repr(self._mode))

Anki.Vector.ExternalInterface.StartTestMode = StartTestMode
del StartTestMode


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

  __slots__ = (
    '_intent', # string[uint_8]
    '_param',  # string[uint_8]
  )

  @property
  def intent(self):
    "string[uint_8] intent struct property."
    return self._intent

  @intent.setter
  def intent(self, value):
    self._intent = msgbuffers.validate_string(
      'AppIntent.intent', value, 255)

  @property
  def param(self):
    "string[uint_8] param struct property."
    return self._param

  @param.setter
  def param(self, value):
    self._param = msgbuffers.validate_string(
      'AppIntent.param', value, 255)

  def __init__(self, intent='', param=''):
    self.intent = intent
    self.param = param

  @classmethod
  def unpack(cls, buffer):
    "Reads a new AppIntent from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('AppIntent.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 AppIntent from the given BinaryReader."
    _intent = reader.read_string('B')
    _param = reader.read_string('B')
    return cls(_intent, _param)

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

  def pack_to(self, writer):
    "Writes the current AppIntent to the given BinaryWriter."
    writer.write_string(self._intent, 'B')
    writer.write_string(self._param, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._intent == other._intent and
        self._param == other._param)
    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._intent, 'B') +
      msgbuffers.size_string(self._param, 'B'))

  def __str__(self):
    return '{type}(intent={intent}, param={param})'.format(
      type=type(self).__name__,
      intent=msgbuffers.shorten_string(self._intent),
      param=msgbuffers.shorten_string(self._param))

  def __repr__(self):
    return '{type}(intent={intent}, param={param})'.format(
      type=type(self).__name__,
      intent=repr(self._intent),
      param=repr(self._param))

Anki.Vector.ExternalInterface.AppIntent = AppIntent
del AppIntent


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

  __slots__ = (
    '_x_mm',  # float_32
    '_y_mm',  # float_32
    '_rad',   # float_32
    '_level', # uint_8
  )

  @property
  def x_mm(self):
    "float_32 x_mm struct property."
    return self._x_mm

  @x_mm.setter
  def x_mm(self, value):
    self._x_mm = msgbuffers.validate_float(
      'DrawPoseMarker.x_mm', value, 'f')

  @property
  def y_mm(self):
    "float_32 y_mm struct property."
    return self._y_mm

  @y_mm.setter
  def y_mm(self, value):
    self._y_mm = msgbuffers.validate_float(
      'DrawPoseMarker.y_mm', value, 'f')

  @property
  def rad(self):
    "float_32 rad struct property."
    return self._rad

  @rad.setter
  def rad(self, value):
    self._rad = msgbuffers.validate_float(
      'DrawPoseMarker.rad', value, 'f')

  @property
  def level(self):
    "uint_8 level struct property."
    return self._level

  @level.setter
  def level(self, value):
    self._level = msgbuffers.validate_integer(
      'DrawPoseMarker.level', value, 0, 255)

  def __init__(self, x_mm=0.0, y_mm=0.0, rad=0.0, level=0):
    self.x_mm = x_mm
    self.y_mm = y_mm
    self.rad = rad
    self.level = level

  @classmethod
  def unpack(cls, buffer):
    "Reads a new DrawPoseMarker from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('DrawPoseMarker.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 DrawPoseMarker from the given BinaryReader."
    _x_mm = reader.read('f')
    _y_mm = reader.read('f')
    _rad = reader.read('f')
    _level = reader.read('B')
    return cls(_x_mm, _y_mm, _rad, _level)

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

  def pack_to(self, writer):
    "Writes the current DrawPoseMarker to the given BinaryWriter."
    writer.write(self._x_mm, 'f')
    writer.write(self._y_mm, 'f')
    writer.write(self._rad, 'f')
    writer.write(self._level, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._x_mm == other._x_mm and
        self._y_mm == other._y_mm and
        self._rad == other._rad and
        self._level == other._level)
    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._x_mm, 'f') +
      msgbuffers.size(self._y_mm, 'f') +
      msgbuffers.size(self._rad, 'f') +
      msgbuffers.size(self._level, 'B'))

  def __str__(self):
    return '{type}(x_mm={x_mm}, y_mm={y_mm}, rad={rad}, level={level})'.format(
      type=type(self).__name__,
      x_mm=self._x_mm,
      y_mm=self._y_mm,
      rad=self._rad,
      level=self._level)

  def __repr__(self):
    return '{type}(x_mm={x_mm}, y_mm={y_mm}, rad={rad}, level={level})'.format(
      type=type(self).__name__,
      x_mm=repr(self._x_mm),
      y_mm=repr(self._y_mm),
      rad=repr(self._rad),
      level=repr(self._level))

Anki.Vector.ExternalInterface.DrawPoseMarker = DrawPoseMarker
del DrawPoseMarker


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ErasePoseMarker from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ErasePoseMarker.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 ErasePoseMarker from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current ErasePoseMarker 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.ErasePoseMarker = ErasePoseMarker
del ErasePoseMarker


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

  __slots__ = (
    '_quadID',      # uint_32
    '_color',       # uint_32
    '_xUpperLeft',  # float_32
    '_yUpperLeft',  # float_32
    '_zUpperLeft',  # float_32
    '_xLowerLeft',  # float_32
    '_yLowerLeft',  # float_32
    '_zLowerLeft',  # float_32
    '_xUpperRight', # float_32
    '_yUpperRight', # float_32
    '_zUpperRight', # float_32
    '_xLowerRight', # float_32
    '_yLowerRight', # float_32
    '_zLowerRight', # float_32
  )

  @property
  def quadID(self):
    "uint_32 quadID struct property."
    return self._quadID

  @quadID.setter
  def quadID(self, value):
    self._quadID = msgbuffers.validate_integer(
      'VisualizeQuad.quadID', value, 0, 4294967295)

  @property
  def color(self):
    "uint_32 color struct property."
    return self._color

  @color.setter
  def color(self, value):
    self._color = msgbuffers.validate_integer(
      'VisualizeQuad.color', value, 0, 4294967295)

  @property
  def xUpperLeft(self):
    "float_32 xUpperLeft struct property."
    return self._xUpperLeft

  @xUpperLeft.setter
  def xUpperLeft(self, value):
    self._xUpperLeft = msgbuffers.validate_float(
      'VisualizeQuad.xUpperLeft', value, 'f')

  @property
  def yUpperLeft(self):
    "float_32 yUpperLeft struct property."
    return self._yUpperLeft

  @yUpperLeft.setter
  def yUpperLeft(self, value):
    self._yUpperLeft = msgbuffers.validate_float(
      'VisualizeQuad.yUpperLeft', value, 'f')

  @property
  def zUpperLeft(self):
    "float_32 zUpperLeft struct property."
    return self._zUpperLeft

  @zUpperLeft.setter
  def zUpperLeft(self, value):
    self._zUpperLeft = msgbuffers.validate_float(
      'VisualizeQuad.zUpperLeft', value, 'f')

  @property
  def xLowerLeft(self):
    "float_32 xLowerLeft struct property."
    return self._xLowerLeft

  @xLowerLeft.setter
  def xLowerLeft(self, value):
    self._xLowerLeft = msgbuffers.validate_float(
      'VisualizeQuad.xLowerLeft', value, 'f')

  @property
  def yLowerLeft(self):
    "float_32 yLowerLeft struct property."
    return self._yLowerLeft

  @yLowerLeft.setter
  def yLowerLeft(self, value):
    self._yLowerLeft = msgbuffers.validate_float(
      'VisualizeQuad.yLowerLeft', value, 'f')

  @property
  def zLowerLeft(self):
    "float_32 zLowerLeft struct property."
    return self._zLowerLeft

  @zLowerLeft.setter
  def zLowerLeft(self, value):
    self._zLowerLeft = msgbuffers.validate_float(
      'VisualizeQuad.zLowerLeft', value, 'f')

  @property
  def xUpperRight(self):
    "float_32 xUpperRight struct property."
    return self._xUpperRight

  @xUpperRight.setter
  def xUpperRight(self, value):
    self._xUpperRight = msgbuffers.validate_float(
      'VisualizeQuad.xUpperRight', value, 'f')

  @property
  def yUpperRight(self):
    "float_32 yUpperRight struct property."
    return self._yUpperRight

  @yUpperRight.setter
  def yUpperRight(self, value):
    self._yUpperRight = msgbuffers.validate_float(
      'VisualizeQuad.yUpperRight', value, 'f')

  @property
  def zUpperRight(self):
    "float_32 zUpperRight struct property."
    return self._zUpperRight

  @zUpperRight.setter
  def zUpperRight(self, value):
    self._zUpperRight = msgbuffers.validate_float(
      'VisualizeQuad.zUpperRight', value, 'f')

  @property
  def xLowerRight(self):
    "float_32 xLowerRight struct property."
    return self._xLowerRight

  @xLowerRight.setter
  def xLowerRight(self, value):
    self._xLowerRight = msgbuffers.validate_float(
      'VisualizeQuad.xLowerRight', value, 'f')

  @property
  def yLowerRight(self):
    "float_32 yLowerRight struct property."
    return self._yLowerRight

  @yLowerRight.setter
  def yLowerRight(self, value):
    self._yLowerRight = msgbuffers.validate_float(
      'VisualizeQuad.yLowerRight', value, 'f')

  @property
  def zLowerRight(self):
    "float_32 zLowerRight struct property."
    return self._zLowerRight

  @zLowerRight.setter
  def zLowerRight(self, value):
    self._zLowerRight = msgbuffers.validate_float(
      'VisualizeQuad.zLowerRight', value, 'f')

  def __init__(self, quadID=0, color=0, xUpperLeft=0.0, yUpperLeft=0.0, zUpperLeft=0.0, xLowerLeft=0.0, yLowerLeft=0.0, zLowerLeft=0.0, xUpperRight=0.0, yUpperRight=0.0, zUpperRight=0.0, xLowerRight=0.0, yLowerRight=0.0, zLowerRight=0.0):
    self.quadID = quadID
    self.color = color
    self.xUpperLeft = xUpperLeft
    self.yUpperLeft = yUpperLeft
    self.zUpperLeft = zUpperLeft
    self.xLowerLeft = xLowerLeft
    self.yLowerLeft = yLowerLeft
    self.zLowerLeft = zLowerLeft
    self.xUpperRight = xUpperRight
    self.yUpperRight = yUpperRight
    self.zUpperRight = zUpperRight
    self.xLowerRight = xLowerRight
    self.yLowerRight = yLowerRight
    self.zLowerRight = zLowerRight

  @classmethod
  def unpack(cls, buffer):
    "Reads a new VisualizeQuad from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('VisualizeQuad.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 VisualizeQuad from the given BinaryReader."
    _quadID = reader.read('I')
    _color = reader.read('I')
    _xUpperLeft = reader.read('f')
    _yUpperLeft = reader.read('f')
    _zUpperLeft = reader.read('f')
    _xLowerLeft = reader.read('f')
    _yLowerLeft = reader.read('f')
    _zLowerLeft = reader.read('f')
    _xUpperRight = reader.read('f')
    _yUpperRight = reader.read('f')
    _zUpperRight = reader.read('f')
    _xLowerRight = reader.read('f')
    _yLowerRight = reader.read('f')
    _zLowerRight = reader.read('f')
    return cls(_quadID, _color, _xUpperLeft, _yUpperLeft, _zUpperLeft, _xLowerLeft, _yLowerLeft, _zLowerLeft, _xUpperRight, _yUpperRight, _zUpperRight, _xLowerRight, _yLowerRight, _zLowerRight)

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

  def pack_to(self, writer):
    "Writes the current VisualizeQuad to the given BinaryWriter."
    writer.write(self._quadID, 'I')
    writer.write(self._color, 'I')
    writer.write(self._xUpperLeft, 'f')
    writer.write(self._yUpperLeft, 'f')
    writer.write(self._zUpperLeft, 'f')
    writer.write(self._xLowerLeft, 'f')
    writer.write(self._yLowerLeft, 'f')
    writer.write(self._zLowerLeft, 'f')
    writer.write(self._xUpperRight, 'f')
    writer.write(self._yUpperRight, 'f')
    writer.write(self._zUpperRight, 'f')
    writer.write(self._xLowerRight, 'f')
    writer.write(self._yLowerRight, 'f')
    writer.write(self._zLowerRight, 'f')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._quadID == other._quadID and
        self._color == other._color and
        self._xUpperLeft == other._xUpperLeft and
        self._yUpperLeft == other._yUpperLeft and
        self._zUpperLeft == other._zUpperLeft and
        self._xLowerLeft == other._xLowerLeft and
        self._yLowerLeft == other._yLowerLeft and
        self._zLowerLeft == other._zLowerLeft and
        self._xUpperRight == other._xUpperRight and
        self._yUpperRight == other._yUpperRight and
        self._zUpperRight == other._zUpperRight and
        self._xLowerRight == other._xLowerRight and
        self._yLowerRight == other._yLowerRight and
        self._zLowerRight == other._zLowerRight)
    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._quadID, 'I') +
      msgbuffers.size(self._color, 'I') +
      msgbuffers.size(self._xUpperLeft, 'f') +
      msgbuffers.size(self._yUpperLeft, 'f') +
      msgbuffers.size(self._zUpperLeft, 'f') +
      msgbuffers.size(self._xLowerLeft, 'f') +
      msgbuffers.size(self._yLowerLeft, 'f') +
      msgbuffers.size(self._zLowerLeft, 'f') +
      msgbuffers.size(self._xUpperRight, 'f') +
      msgbuffers.size(self._yUpperRight, 'f') +
      msgbuffers.size(self._zUpperRight, 'f') +
      msgbuffers.size(self._xLowerRight, 'f') +
      msgbuffers.size(self._yLowerRight, 'f') +
      msgbuffers.size(self._zLowerRight, 'f'))

  def __str__(self):
    return '{type}(quadID={quadID}, color={color}, xUpperLeft={xUpperLeft}, yUpperLeft={yUpperLeft}, zUpperLeft={zUpperLeft}, xLowerLeft={xLowerLeft}, yLowerLeft={yLowerLeft}, zLowerLeft={zLowerLeft}, xUpperRight={xUpperRight}, yUpperRight={yUpperRight}, zUpperRight={zUpperRight}, xLowerRight={xLowerRight}, yLowerRight={yLowerRight}, zLowerRight={zLowerRight})'.format(
      type=type(self).__name__,
      quadID=self._quadID,
      color=self._color,
      xUpperLeft=self._xUpperLeft,
      yUpperLeft=self._yUpperLeft,
      zUpperLeft=self._zUpperLeft,
      xLowerLeft=self._xLowerLeft,
      yLowerLeft=self._yLowerLeft,
      zLowerLeft=self._zLowerLeft,
      xUpperRight=self._xUpperRight,
      yUpperRight=self._yUpperRight,
      zUpperRight=self._zUpperRight,
      xLowerRight=self._xLowerRight,
      yLowerRight=self._yLowerRight,
      zLowerRight=self._zLowerRight)

  def __repr__(self):
    return '{type}(quadID={quadID}, color={color}, xUpperLeft={xUpperLeft}, yUpperLeft={yUpperLeft}, zUpperLeft={zUpperLeft}, xLowerLeft={xLowerLeft}, yLowerLeft={yLowerLeft}, zLowerLeft={zLowerLeft}, xUpperRight={xUpperRight}, yUpperRight={yUpperRight}, zUpperRight={zUpperRight}, xLowerRight={xLowerRight}, yLowerRight={yLowerRight}, zLowerRight={zLowerRight})'.format(
      type=type(self).__name__,
      quadID=repr(self._quadID),
      color=repr(self._color),
      xUpperLeft=repr(self._xUpperLeft),
      yUpperLeft=repr(self._yUpperLeft),
      zUpperLeft=repr(self._zUpperLeft),
      xLowerLeft=repr(self._xLowerLeft),
      yLowerLeft=repr(self._yLowerLeft),
      zLowerLeft=repr(self._zLowerLeft),
      xUpperRight=repr(self._xUpperRight),
      yUpperRight=repr(self._yUpperRight),
      zUpperRight=repr(self._zUpperRight),
      xLowerRight=repr(self._xLowerRight),
      yLowerRight=repr(self._yLowerRight),
      zLowerRight=repr(self._zLowerRight))

Anki.Vector.ExternalInterface.VisualizeQuad = VisualizeQuad
del VisualizeQuad


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

  __slots__ = (
    '_quadID', # uint_32
  )

  @property
  def quadID(self):
    "uint_32 quadID struct property."
    return self._quadID

  @quadID.setter
  def quadID(self, value):
    self._quadID = msgbuffers.validate_integer(
      'EraseQuad.quadID', value, 0, 4294967295)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new EraseQuad from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('EraseQuad.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 EraseQuad from the given BinaryReader."
    _quadID = reader.read('I')
    return cls(_quadID)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._quadID == other._quadID
    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._quadID, 'I'))

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

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

Anki.Vector.ExternalInterface.EraseQuad = EraseQuad
del EraseQuad


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

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

  @property
  def full_path(self):
    "string[uint_8] full_path struct property."
    return self._full_path

  @full_path.setter
  def full_path(self, value):
    self._full_path = msgbuffers.validate_string(
      'ReadAnimationFile.full_path', value, 255)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ReadAnimationFile from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ReadAnimationFile.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 ReadAnimationFile from the given BinaryReader."
    _full_path = reader.read_string('B')
    return cls(_full_path)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._full_path == other._full_path
    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._full_path, 'B'))

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

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

Anki.Vector.ExternalInterface.ReadAnimationFile = ReadAnimationFile
del ReadAnimationFile


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RequestAvailableAnimations from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RequestAvailableAnimations.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 RequestAvailableAnimations from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current RequestAvailableAnimations 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.RequestAvailableAnimations = RequestAvailableAnimations
del RequestAvailableAnimations


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RequestAvailableAnimationGroups from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RequestAvailableAnimationGroups.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 RequestAvailableAnimationGroups from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current RequestAvailableAnimationGroups 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.RequestAvailableAnimationGroups = RequestAvailableAnimationGroups
del RequestAvailableAnimationGroups


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

  __slots__ = (
    '_drivingStartAnim', # Anki.Vector.AnimationTrigger
    '_drivingLoopAnim',  # Anki.Vector.AnimationTrigger
    '_drivingEndAnim',   # Anki.Vector.AnimationTrigger
    '_lockName',         # string[uint_8]
  )

  @property
  def drivingStartAnim(self):
    "Anki.Vector.AnimationTrigger drivingStartAnim struct property."
    return self._drivingStartAnim

  @drivingStartAnim.setter
  def drivingStartAnim(self, value):
    self._drivingStartAnim = msgbuffers.validate_integer(
      'PushDrivingAnimations.drivingStartAnim', value, -2147483648, 2147483647)

  @property
  def drivingLoopAnim(self):
    "Anki.Vector.AnimationTrigger drivingLoopAnim struct property."
    return self._drivingLoopAnim

  @drivingLoopAnim.setter
  def drivingLoopAnim(self, value):
    self._drivingLoopAnim = msgbuffers.validate_integer(
      'PushDrivingAnimations.drivingLoopAnim', value, -2147483648, 2147483647)

  @property
  def drivingEndAnim(self):
    "Anki.Vector.AnimationTrigger drivingEndAnim struct property."
    return self._drivingEndAnim

  @drivingEndAnim.setter
  def drivingEndAnim(self, value):
    self._drivingEndAnim = msgbuffers.validate_integer(
      'PushDrivingAnimations.drivingEndAnim', value, -2147483648, 2147483647)

  @property
  def lockName(self):
    "string[uint_8] lockName struct property."
    return self._lockName

  @lockName.setter
  def lockName(self, value):
    self._lockName = msgbuffers.validate_string(
      'PushDrivingAnimations.lockName', value, 255)

  def __init__(self, drivingStartAnim=Anki.Vector.AnimationTrigger.InvalidAnimTrigger, drivingLoopAnim=Anki.Vector.AnimationTrigger.InvalidAnimTrigger, drivingEndAnim=Anki.Vector.AnimationTrigger.InvalidAnimTrigger, lockName=''):
    self.drivingStartAnim = drivingStartAnim
    self.drivingLoopAnim = drivingLoopAnim
    self.drivingEndAnim = drivingEndAnim
    self.lockName = lockName

  @classmethod
  def unpack(cls, buffer):
    "Reads a new PushDrivingAnimations from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('PushDrivingAnimations.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 PushDrivingAnimations from the given BinaryReader."
    _drivingStartAnim = reader.read('i')
    _drivingLoopAnim = reader.read('i')
    _drivingEndAnim = reader.read('i')
    _lockName = reader.read_string('B')
    return cls(_drivingStartAnim, _drivingLoopAnim, _drivingEndAnim, _lockName)

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

  def pack_to(self, writer):
    "Writes the current PushDrivingAnimations to the given BinaryWriter."
    writer.write(self._drivingStartAnim, 'i')
    writer.write(self._drivingLoopAnim, 'i')
    writer.write(self._drivingEndAnim, 'i')
    writer.write_string(self._lockName, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._drivingStartAnim == other._drivingStartAnim and
        self._drivingLoopAnim == other._drivingLoopAnim and
        self._drivingEndAnim == other._drivingEndAnim and
        self._lockName == other._lockName)
    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._drivingStartAnim, 'i') +
      msgbuffers.size(self._drivingLoopAnim, 'i') +
      msgbuffers.size(self._drivingEndAnim, 'i') +
      msgbuffers.size_string(self._lockName, 'B'))

  def __str__(self):
    return '{type}(drivingStartAnim={drivingStartAnim}, drivingLoopAnim={drivingLoopAnim}, drivingEndAnim={drivingEndAnim}, lockName={lockName})'.format(
      type=type(self).__name__,
      drivingStartAnim=self._drivingStartAnim,
      drivingLoopAnim=self._drivingLoopAnim,
      drivingEndAnim=self._drivingEndAnim,
      lockName=msgbuffers.shorten_string(self._lockName))

  def __repr__(self):
    return '{type}(drivingStartAnim={drivingStartAnim}, drivingLoopAnim={drivingLoopAnim}, drivingEndAnim={drivingEndAnim}, lockName={lockName})'.format(
      type=type(self).__name__,
      drivingStartAnim=repr(self._drivingStartAnim),
      drivingLoopAnim=repr(self._drivingLoopAnim),
      drivingEndAnim=repr(self._drivingEndAnim),
      lockName=repr(self._lockName))

Anki.Vector.ExternalInterface.PushDrivingAnimations = PushDrivingAnimations
del PushDrivingAnimations


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

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

  @property
  def lockName(self):
    "string[uint_8] lockName struct property."
    return self._lockName

  @lockName.setter
  def lockName(self, value):
    self._lockName = msgbuffers.validate_string(
      'RemoveDrivingAnimations.lockName', value, 255)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RemoveDrivingAnimations from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RemoveDrivingAnimations.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 RemoveDrivingAnimations from the given BinaryReader."
    _lockName = reader.read_string('B')
    return cls(_lockName)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._lockName == other._lockName
    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._lockName, 'B'))

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

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

Anki.Vector.ExternalInterface.RemoveDrivingAnimations = RemoveDrivingAnimations
del RemoveDrivingAnimations


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

  __slots__ = (
    '_faceParams',       # Anki.Vector.ProceduralFaceParameters
    '_duration_ms',      # uint_32
    '_interruptRunning', # bool
  )

  @property
  def faceParams(self):
    "Anki.Vector.ProceduralFaceParameters faceParams struct property."
    return self._faceParams

  @faceParams.setter
  def faceParams(self, value):
    self._faceParams = msgbuffers.validate_object(
      'DisplayProceduralFace.faceParams', value, Anki.Vector.ProceduralFaceParameters)

  @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(
      'DisplayProceduralFace.duration_ms', value, 0, 4294967295)

  @property
  def interruptRunning(self):
    "bool interruptRunning struct property."
    return self._interruptRunning

  @interruptRunning.setter
  def interruptRunning(self, value):
    self._interruptRunning = msgbuffers.validate_bool(
      'DisplayProceduralFace.interruptRunning', value)

  def __init__(self, faceParams=Anki.Vector.ProceduralFaceParameters(), duration_ms=0, interruptRunning=False):
    self.faceParams = faceParams
    self.duration_ms = duration_ms
    self.interruptRunning = interruptRunning

  @classmethod
  def unpack(cls, buffer):
    "Reads a new DisplayProceduralFace from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('DisplayProceduralFace.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 DisplayProceduralFace from the given BinaryReader."
    _faceParams = reader.read_object(Anki.Vector.ProceduralFaceParameters.unpack_from)
    _duration_ms = reader.read('I')
    _interruptRunning = bool(reader.read('b'))
    return cls(_faceParams, _duration_ms, _interruptRunning)

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

  def pack_to(self, writer):
    "Writes the current DisplayProceduralFace to the given BinaryWriter."
    writer.write_object(self._faceParams)
    writer.write(self._duration_ms, 'I')
    writer.write(int(self._interruptRunning), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._faceParams == other._faceParams and
        self._duration_ms == other._duration_ms and
        self._interruptRunning == other._interruptRunning)
    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._faceParams) +
      msgbuffers.size(self._duration_ms, 'I') +
      msgbuffers.size(self._interruptRunning, 'b'))

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

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

Anki.Vector.ExternalInterface.DisplayProceduralFace = DisplayProceduralFace
del DisplayProceduralFace


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

  __slots__ = (
    '_hue', # float_32
  )

  @property
  def hue(self):
    "float_32 hue struct property."
    return self._hue

  @hue.setter
  def hue(self, value):
    self._hue = msgbuffers.validate_float(
      'SetFaceHue.hue', value, 'f')

  def __init__(self, hue=0.0):
    self.hue = hue

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetFaceHue from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetFaceHue.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 SetFaceHue from the given BinaryReader."
    _hue = reader.read('f')
    return cls(_hue)

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

  def pack_to(self, writer):
    "Writes the current SetFaceHue to the given BinaryWriter."
    writer.write(self._hue, 'f')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._hue == other._hue
    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._hue, 'f'))

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

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

Anki.Vector.ExternalInterface.SetFaceHue = SetFaceHue
del SetFaceHue


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

  __slots__ = (
    '_duration_ms',      # uint_32
    '_faceData',         # uint_8[1104]
    '_imageId',          # uint_8
    '_chunkIndex',       # uint_8
    '_interruptRunning', # bool
  )

  @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(
      'DisplayFaceImageBinaryChunk.duration_ms', value, 0, 4294967295)

  @property
  def faceData(self):
    "uint_8[1104] faceData struct property."
    return self._faceData

  @faceData.setter
  def faceData(self, value):
    self._faceData = msgbuffers.validate_farray(
      'DisplayFaceImageBinaryChunk.faceData', value, 1104,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 255))

  @property
  def imageId(self):
    "uint_8 imageId struct property."
    return self._imageId

  @imageId.setter
  def imageId(self, value):
    self._imageId = msgbuffers.validate_integer(
      'DisplayFaceImageBinaryChunk.imageId', value, 0, 255)

  @property
  def chunkIndex(self):
    "uint_8 chunkIndex struct property."
    return self._chunkIndex

  @chunkIndex.setter
  def chunkIndex(self, value):
    self._chunkIndex = msgbuffers.validate_integer(
      'DisplayFaceImageBinaryChunk.chunkIndex', value, 0, 255)

  @property
  def interruptRunning(self):
    "bool interruptRunning struct property."
    return self._interruptRunning

  @interruptRunning.setter
  def interruptRunning(self, value):
    self._interruptRunning = msgbuffers.validate_bool(
      'DisplayFaceImageBinaryChunk.interruptRunning', value)

  def __init__(self, duration_ms=0, faceData=(0,) * 1104, imageId=0, chunkIndex=0, interruptRunning=False):
    self.duration_ms = duration_ms
    self.faceData = faceData
    self.imageId = imageId
    self.chunkIndex = chunkIndex
    self.interruptRunning = interruptRunning

  @classmethod
  def unpack(cls, buffer):
    "Reads a new DisplayFaceImageBinaryChunk from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('DisplayFaceImageBinaryChunk.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 DisplayFaceImageBinaryChunk from the given BinaryReader."
    _duration_ms = reader.read('I')
    _faceData = reader.read_farray('B', 1104)
    _imageId = reader.read('B')
    _chunkIndex = reader.read('B')
    _interruptRunning = bool(reader.read('b'))
    return cls(_duration_ms, _faceData, _imageId, _chunkIndex, _interruptRunning)

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

  def pack_to(self, writer):
    "Writes the current DisplayFaceImageBinaryChunk to the given BinaryWriter."
    writer.write(self._duration_ms, 'I')
    writer.write_farray(self._faceData, 'B', 1104)
    writer.write(self._imageId, 'B')
    writer.write(self._chunkIndex, 'B')
    writer.write(int(self._interruptRunning), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._duration_ms == other._duration_ms and
        self._faceData == other._faceData and
        self._imageId == other._imageId and
        self._chunkIndex == other._chunkIndex and
        self._interruptRunning == other._interruptRunning)
    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') +
      msgbuffers.size_farray(self._faceData, 'B', 1104) +
      msgbuffers.size(self._imageId, 'B') +
      msgbuffers.size(self._chunkIndex, 'B') +
      msgbuffers.size(self._interruptRunning, 'b'))

  def __str__(self):
    return '{type}(duration_ms={duration_ms}, faceData={faceData}, imageId={imageId}, chunkIndex={chunkIndex}, interruptRunning={interruptRunning})'.format(
      type=type(self).__name__,
      duration_ms=self._duration_ms,
      faceData=msgbuffers.shorten_sequence(self._faceData),
      imageId=self._imageId,
      chunkIndex=self._chunkIndex,
      interruptRunning=self._interruptRunning)

  def __repr__(self):
    return '{type}(duration_ms={duration_ms}, faceData={faceData}, imageId={imageId}, chunkIndex={chunkIndex}, interruptRunning={interruptRunning})'.format(
      type=type(self).__name__,
      duration_ms=repr(self._duration_ms),
      faceData=repr(self._faceData),
      imageId=repr(self._imageId),
      chunkIndex=repr(self._chunkIndex),
      interruptRunning=repr(self._interruptRunning))

Anki.Vector.ExternalInterface.DisplayFaceImageBinaryChunk = DisplayFaceImageBinaryChunk
del DisplayFaceImageBinaryChunk


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

  __slots__ = (
    '_faceData',         # uint_16[600]
    '_numPixels',        # uint_16
    '_chunkIndex',       # uint_8
    '_numChunks',        # uint_8
    '_duration_ms',      # uint_32
    '_interruptRunning', # bool
  )

  @property
  def faceData(self):
    "uint_16[600] faceData struct property."
    return self._faceData

  @faceData.setter
  def faceData(self, value):
    self._faceData = msgbuffers.validate_farray(
      'DisplayFaceImageRGBChunk.faceData', value, 600,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 65535))

  @property
  def numPixels(self):
    "uint_16 numPixels struct property."
    return self._numPixels

  @numPixels.setter
  def numPixels(self, value):
    self._numPixels = msgbuffers.validate_integer(
      'DisplayFaceImageRGBChunk.numPixels', value, 0, 65535)

  @property
  def chunkIndex(self):
    "uint_8 chunkIndex struct property."
    return self._chunkIndex

  @chunkIndex.setter
  def chunkIndex(self, value):
    self._chunkIndex = msgbuffers.validate_integer(
      'DisplayFaceImageRGBChunk.chunkIndex', value, 0, 255)

  @property
  def numChunks(self):
    "uint_8 numChunks struct property."
    return self._numChunks

  @numChunks.setter
  def numChunks(self, value):
    self._numChunks = msgbuffers.validate_integer(
      'DisplayFaceImageRGBChunk.numChunks', value, 0, 255)

  @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(
      'DisplayFaceImageRGBChunk.duration_ms', value, 0, 4294967295)

  @property
  def interruptRunning(self):
    "bool interruptRunning struct property."
    return self._interruptRunning

  @interruptRunning.setter
  def interruptRunning(self, value):
    self._interruptRunning = msgbuffers.validate_bool(
      'DisplayFaceImageRGBChunk.interruptRunning', value)

  def __init__(self, faceData=(0,) * 600, numPixels=0, chunkIndex=0, numChunks=0, duration_ms=0, interruptRunning=False):
    self.faceData = faceData
    self.numPixels = numPixels
    self.chunkIndex = chunkIndex
    self.numChunks = numChunks
    self.duration_ms = duration_ms
    self.interruptRunning = interruptRunning

  @classmethod
  def unpack(cls, buffer):
    "Reads a new DisplayFaceImageRGBChunk from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('DisplayFaceImageRGBChunk.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 DisplayFaceImageRGBChunk from the given BinaryReader."
    _faceData = reader.read_farray('H', 600)
    _numPixels = reader.read('H')
    _chunkIndex = reader.read('B')
    _numChunks = reader.read('B')
    _duration_ms = reader.read('I')
    _interruptRunning = bool(reader.read('b'))
    return cls(_faceData, _numPixels, _chunkIndex, _numChunks, _duration_ms, _interruptRunning)

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

  def pack_to(self, writer):
    "Writes the current DisplayFaceImageRGBChunk to the given BinaryWriter."
    writer.write_farray(self._faceData, 'H', 600)
    writer.write(self._numPixels, 'H')
    writer.write(self._chunkIndex, 'B')
    writer.write(self._numChunks, 'B')
    writer.write(self._duration_ms, 'I')
    writer.write(int(self._interruptRunning), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._faceData == other._faceData and
        self._numPixels == other._numPixels and
        self._chunkIndex == other._chunkIndex and
        self._numChunks == other._numChunks and
        self._duration_ms == other._duration_ms and
        self._interruptRunning == other._interruptRunning)
    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_farray(self._faceData, 'H', 600) +
      msgbuffers.size(self._numPixels, 'H') +
      msgbuffers.size(self._chunkIndex, 'B') +
      msgbuffers.size(self._numChunks, 'B') +
      msgbuffers.size(self._duration_ms, 'I') +
      msgbuffers.size(self._interruptRunning, 'b'))

  def __str__(self):
    return '{type}(faceData={faceData}, numPixels={numPixels}, chunkIndex={chunkIndex}, numChunks={numChunks}, duration_ms={duration_ms}, interruptRunning={interruptRunning})'.format(
      type=type(self).__name__,
      faceData=msgbuffers.shorten_sequence(self._faceData),
      numPixels=self._numPixels,
      chunkIndex=self._chunkIndex,
      numChunks=self._numChunks,
      duration_ms=self._duration_ms,
      interruptRunning=self._interruptRunning)

  def __repr__(self):
    return '{type}(faceData={faceData}, numPixels={numPixels}, chunkIndex={chunkIndex}, numChunks={numChunks}, duration_ms={duration_ms}, interruptRunning={interruptRunning})'.format(
      type=type(self).__name__,
      faceData=repr(self._faceData),
      numPixels=repr(self._numPixels),
      chunkIndex=repr(self._chunkIndex),
      numChunks=repr(self._numChunks),
      duration_ms=repr(self._duration_ms),
      interruptRunning=repr(self._interruptRunning))

Anki.Vector.ExternalInterface.DisplayFaceImageRGBChunk = DisplayFaceImageRGBChunk
del DisplayFaceImageRGBChunk


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

  __slots__ = (
    '_objectID',               # uint_32
    '_onColor',                # uint_32
    '_offColor',               # uint_32
    '_onPeriod_ms',            # uint_32
    '_offPeriod_ms',           # uint_32
    '_transitionOnPeriod_ms',  # uint_32
    '_transitionOffPeriod_ms', # uint_32
    '_offset',                 # int_32
    '_relativeToX',            # float_32
    '_relativeToY',            # float_32
    '_rotate',                 # bool
    '_whichLEDs',              # Anki.Vector.WhichCubeLEDs
    '_makeRelative',           # Anki.Vector.MakeRelativeMode
    '_turnOffUnspecifiedLEDs', # uint_8
  )

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

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

  @property
  def onColor(self):
    "uint_32 onColor struct property."
    return self._onColor

  @onColor.setter
  def onColor(self, value):
    self._onColor = msgbuffers.validate_integer(
      'SetActiveObjectLEDs.onColor', value, 0, 4294967295)

  @property
  def offColor(self):
    "uint_32 offColor struct property."
    return self._offColor

  @offColor.setter
  def offColor(self, value):
    self._offColor = msgbuffers.validate_integer(
      'SetActiveObjectLEDs.offColor', value, 0, 4294967295)

  @property
  def onPeriod_ms(self):
    "uint_32 onPeriod_ms struct property."
    return self._onPeriod_ms

  @onPeriod_ms.setter
  def onPeriod_ms(self, value):
    self._onPeriod_ms = msgbuffers.validate_integer(
      'SetActiveObjectLEDs.onPeriod_ms', value, 0, 4294967295)

  @property
  def offPeriod_ms(self):
    "uint_32 offPeriod_ms struct property."
    return self._offPeriod_ms

  @offPeriod_ms.setter
  def offPeriod_ms(self, value):
    self._offPeriod_ms = msgbuffers.validate_integer(
      'SetActiveObjectLEDs.offPeriod_ms', value, 0, 4294967295)

  @property
  def transitionOnPeriod_ms(self):
    "uint_32 transitionOnPeriod_ms struct property."
    return self._transitionOnPeriod_ms

  @transitionOnPeriod_ms.setter
  def transitionOnPeriod_ms(self, value):
    self._transitionOnPeriod_ms = msgbuffers.validate_integer(
      'SetActiveObjectLEDs.transitionOnPeriod_ms', value, 0, 4294967295)

  @property
  def transitionOffPeriod_ms(self):
    "uint_32 transitionOffPeriod_ms struct property."
    return self._transitionOffPeriod_ms

  @transitionOffPeriod_ms.setter
  def transitionOffPeriod_ms(self, value):
    self._transitionOffPeriod_ms = msgbuffers.validate_integer(
      'SetActiveObjectLEDs.transitionOffPeriod_ms', value, 0, 4294967295)

  @property
  def offset(self):
    "int_32 offset struct property."
    return self._offset

  @offset.setter
  def offset(self, value):
    self._offset = msgbuffers.validate_integer(
      'SetActiveObjectLEDs.offset', value, -2147483648, 2147483647)

  @property
  def relativeToX(self):
    "float_32 relativeToX struct property."
    return self._relativeToX

  @relativeToX.setter
  def relativeToX(self, value):
    self._relativeToX = msgbuffers.validate_float(
      'SetActiveObjectLEDs.relativeToX', value, 'f')

  @property
  def relativeToY(self):
    "float_32 relativeToY struct property."
    return self._relativeToY

  @relativeToY.setter
  def relativeToY(self, value):
    self._relativeToY = msgbuffers.validate_float(
      'SetActiveObjectLEDs.relativeToY', value, 'f')

  @property
  def rotate(self):
    "bool rotate struct property."
    return self._rotate

  @rotate.setter
  def rotate(self, value):
    self._rotate = msgbuffers.validate_bool(
      'SetActiveObjectLEDs.rotate', value)

  @property
  def whichLEDs(self):
    "Anki.Vector.WhichCubeLEDs whichLEDs struct property."
    return self._whichLEDs

  @whichLEDs.setter
  def whichLEDs(self, value):
    self._whichLEDs = msgbuffers.validate_integer(
      'SetActiveObjectLEDs.whichLEDs', value, 0, 255)

  @property
  def makeRelative(self):
    "Anki.Vector.MakeRelativeMode makeRelative struct property."
    return self._makeRelative

  @makeRelative.setter
  def makeRelative(self, value):
    self._makeRelative = msgbuffers.validate_integer(
      'SetActiveObjectLEDs.makeRelative', value, 0, 255)

  @property
  def turnOffUnspecifiedLEDs(self):
    "uint_8 turnOffUnspecifiedLEDs struct property."
    return self._turnOffUnspecifiedLEDs

  @turnOffUnspecifiedLEDs.setter
  def turnOffUnspecifiedLEDs(self, value):
    self._turnOffUnspecifiedLEDs = msgbuffers.validate_integer(
      'SetActiveObjectLEDs.turnOffUnspecifiedLEDs', value, 0, 255)

  def __init__(self, objectID=0, onColor=0, offColor=0, onPeriod_ms=0, offPeriod_ms=0, transitionOnPeriod_ms=0, transitionOffPeriod_ms=0, offset=0, relativeToX=0.0, relativeToY=0.0, rotate=False, whichLEDs=Anki.Vector.WhichCubeLEDs.NONE, makeRelative=Anki.Vector.MakeRelativeMode.RELATIVE_LED_MODE_OFF, turnOffUnspecifiedLEDs=0):
    self.objectID = objectID
    self.onColor = onColor
    self.offColor = offColor
    self.onPeriod_ms = onPeriod_ms
    self.offPeriod_ms = offPeriod_ms
    self.transitionOnPeriod_ms = transitionOnPeriod_ms
    self.transitionOffPeriod_ms = transitionOffPeriod_ms
    self.offset = offset
    self.relativeToX = relativeToX
    self.relativeToY = relativeToY
    self.rotate = rotate
    self.whichLEDs = whichLEDs
    self.makeRelative = makeRelative
    self.turnOffUnspecifiedLEDs = turnOffUnspecifiedLEDs

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetActiveObjectLEDs from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetActiveObjectLEDs.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 SetActiveObjectLEDs from the given BinaryReader."
    _objectID = reader.read('I')
    _onColor = reader.read('I')
    _offColor = reader.read('I')
    _onPeriod_ms = reader.read('I')
    _offPeriod_ms = reader.read('I')
    _transitionOnPeriod_ms = reader.read('I')
    _transitionOffPeriod_ms = reader.read('I')
    _offset = reader.read('i')
    _relativeToX = reader.read('f')
    _relativeToY = reader.read('f')
    _rotate = bool(reader.read('b'))
    _whichLEDs = reader.read('B')
    _makeRelative = reader.read('B')
    _turnOffUnspecifiedLEDs = reader.read('B')
    return cls(_objectID, _onColor, _offColor, _onPeriod_ms, _offPeriod_ms, _transitionOnPeriod_ms, _transitionOffPeriod_ms, _offset, _relativeToX, _relativeToY, _rotate, _whichLEDs, _makeRelative, _turnOffUnspecifiedLEDs)

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

  def pack_to(self, writer):
    "Writes the current SetActiveObjectLEDs to the given BinaryWriter."
    writer.write(self._objectID, 'I')
    writer.write(self._onColor, 'I')
    writer.write(self._offColor, 'I')
    writer.write(self._onPeriod_ms, 'I')
    writer.write(self._offPeriod_ms, 'I')
    writer.write(self._transitionOnPeriod_ms, 'I')
    writer.write(self._transitionOffPeriod_ms, 'I')
    writer.write(self._offset, 'i')
    writer.write(self._relativeToX, 'f')
    writer.write(self._relativeToY, 'f')
    writer.write(int(self._rotate), 'b')
    writer.write(self._whichLEDs, 'B')
    writer.write(self._makeRelative, 'B')
    writer.write(self._turnOffUnspecifiedLEDs, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._objectID == other._objectID and
        self._onColor == other._onColor and
        self._offColor == other._offColor and
        self._onPeriod_ms == other._onPeriod_ms and
        self._offPeriod_ms == other._offPeriod_ms and
        self._transitionOnPeriod_ms == other._transitionOnPeriod_ms and
        self._transitionOffPeriod_ms == other._transitionOffPeriod_ms and
        self._offset == other._offset and
        self._relativeToX == other._relativeToX and
        self._relativeToY == other._relativeToY and
        self._rotate == other._rotate and
        self._whichLEDs == other._whichLEDs and
        self._makeRelative == other._makeRelative and
        self._turnOffUnspecifiedLEDs == other._turnOffUnspecifiedLEDs)
    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._onColor, 'I') +
      msgbuffers.size(self._offColor, 'I') +
      msgbuffers.size(self._onPeriod_ms, 'I') +
      msgbuffers.size(self._offPeriod_ms, 'I') +
      msgbuffers.size(self._transitionOnPeriod_ms, 'I') +
      msgbuffers.size(self._transitionOffPeriod_ms, 'I') +
      msgbuffers.size(self._offset, 'i') +
      msgbuffers.size(self._relativeToX, 'f') +
      msgbuffers.size(self._relativeToY, 'f') +
      msgbuffers.size(self._rotate, 'b') +
      msgbuffers.size(self._whichLEDs, 'B') +
      msgbuffers.size(self._makeRelative, 'B') +
      msgbuffers.size(self._turnOffUnspecifiedLEDs, 'B'))

  def __str__(self):
    return '{type}(objectID={objectID}, onColor={onColor}, offColor={offColor}, onPeriod_ms={onPeriod_ms}, offPeriod_ms={offPeriod_ms}, transitionOnPeriod_ms={transitionOnPeriod_ms}, transitionOffPeriod_ms={transitionOffPeriod_ms}, offset={offset}, relativeToX={relativeToX}, relativeToY={relativeToY}, rotate={rotate}, whichLEDs={whichLEDs}, makeRelative={makeRelative}, turnOffUnspecifiedLEDs={turnOffUnspecifiedLEDs})'.format(
      type=type(self).__name__,
      objectID=self._objectID,
      onColor=self._onColor,
      offColor=self._offColor,
      onPeriod_ms=self._onPeriod_ms,
      offPeriod_ms=self._offPeriod_ms,
      transitionOnPeriod_ms=self._transitionOnPeriod_ms,
      transitionOffPeriod_ms=self._transitionOffPeriod_ms,
      offset=self._offset,
      relativeToX=self._relativeToX,
      relativeToY=self._relativeToY,
      rotate=self._rotate,
      whichLEDs=self._whichLEDs,
      makeRelative=self._makeRelative,
      turnOffUnspecifiedLEDs=self._turnOffUnspecifiedLEDs)

  def __repr__(self):
    return '{type}(objectID={objectID}, onColor={onColor}, offColor={offColor}, onPeriod_ms={onPeriod_ms}, offPeriod_ms={offPeriod_ms}, transitionOnPeriod_ms={transitionOnPeriod_ms}, transitionOffPeriod_ms={transitionOffPeriod_ms}, offset={offset}, relativeToX={relativeToX}, relativeToY={relativeToY}, rotate={rotate}, whichLEDs={whichLEDs}, makeRelative={makeRelative}, turnOffUnspecifiedLEDs={turnOffUnspecifiedLEDs})'.format(
      type=type(self).__name__,
      objectID=repr(self._objectID),
      onColor=repr(self._onColor),
      offColor=repr(self._offColor),
      onPeriod_ms=repr(self._onPeriod_ms),
      offPeriod_ms=repr(self._offPeriod_ms),
      transitionOnPeriod_ms=repr(self._transitionOnPeriod_ms),
      transitionOffPeriod_ms=repr(self._transitionOffPeriod_ms),
      offset=repr(self._offset),
      relativeToX=repr(self._relativeToX),
      relativeToY=repr(self._relativeToY),
      rotate=repr(self._rotate),
      whichLEDs=repr(self._whichLEDs),
      makeRelative=repr(self._makeRelative),
      turnOffUnspecifiedLEDs=repr(self._turnOffUnspecifiedLEDs))

Anki.Vector.ExternalInterface.SetActiveObjectLEDs = SetActiveObjectLEDs
del SetActiveObjectLEDs


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

  __slots__ = (
    '_objectID',               # uint_32
    '_onColor',                # uint_32[4]
    '_offColor',               # uint_32[4]
    '_onPeriod_ms',            # uint_32[4]
    '_offPeriod_ms',           # uint_32[4]
    '_transitionOnPeriod_ms',  # uint_32[4]
    '_transitionOffPeriod_ms', # uint_32[4]
    '_offset',                 # int_32[4]
    '_relativeToX',            # float_32
    '_relativeToY',            # float_32
    '_rotate',                 # bool
    '_makeRelative',           # Anki.Vector.MakeRelativeMode
  )

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

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

  @property
  def onColor(self):
    "uint_32[4] onColor struct property."
    return self._onColor

  @onColor.setter
  def onColor(self, value):
    self._onColor = msgbuffers.validate_farray(
      'SetAllActiveObjectLEDs.onColor', value, 4,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 4294967295))

  @property
  def offColor(self):
    "uint_32[4] offColor struct property."
    return self._offColor

  @offColor.setter
  def offColor(self, value):
    self._offColor = msgbuffers.validate_farray(
      'SetAllActiveObjectLEDs.offColor', value, 4,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 4294967295))

  @property
  def onPeriod_ms(self):
    "uint_32[4] onPeriod_ms struct property."
    return self._onPeriod_ms

  @onPeriod_ms.setter
  def onPeriod_ms(self, value):
    self._onPeriod_ms = msgbuffers.validate_farray(
      'SetAllActiveObjectLEDs.onPeriod_ms', value, 4,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 4294967295))

  @property
  def offPeriod_ms(self):
    "uint_32[4] offPeriod_ms struct property."
    return self._offPeriod_ms

  @offPeriod_ms.setter
  def offPeriod_ms(self, value):
    self._offPeriod_ms = msgbuffers.validate_farray(
      'SetAllActiveObjectLEDs.offPeriod_ms', value, 4,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 4294967295))

  @property
  def transitionOnPeriod_ms(self):
    "uint_32[4] transitionOnPeriod_ms struct property."
    return self._transitionOnPeriod_ms

  @transitionOnPeriod_ms.setter
  def transitionOnPeriod_ms(self, value):
    self._transitionOnPeriod_ms = msgbuffers.validate_farray(
      'SetAllActiveObjectLEDs.transitionOnPeriod_ms', value, 4,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 4294967295))

  @property
  def transitionOffPeriod_ms(self):
    "uint_32[4] transitionOffPeriod_ms struct property."
    return self._transitionOffPeriod_ms

  @transitionOffPeriod_ms.setter
  def transitionOffPeriod_ms(self, value):
    self._transitionOffPeriod_ms = msgbuffers.validate_farray(
      'SetAllActiveObjectLEDs.transitionOffPeriod_ms', value, 4,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 4294967295))

  @property
  def offset(self):
    "int_32[4] offset struct property."
    return self._offset

  @offset.setter
  def offset(self, value):
    self._offset = msgbuffers.validate_farray(
      'SetAllActiveObjectLEDs.offset', value, 4,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, -2147483648, 2147483647))

  @property
  def relativeToX(self):
    "float_32 relativeToX struct property."
    return self._relativeToX

  @relativeToX.setter
  def relativeToX(self, value):
    self._relativeToX = msgbuffers.validate_float(
      'SetAllActiveObjectLEDs.relativeToX', value, 'f')

  @property
  def relativeToY(self):
    "float_32 relativeToY struct property."
    return self._relativeToY

  @relativeToY.setter
  def relativeToY(self, value):
    self._relativeToY = msgbuffers.validate_float(
      'SetAllActiveObjectLEDs.relativeToY', value, 'f')

  @property
  def rotate(self):
    "bool rotate struct property."
    return self._rotate

  @rotate.setter
  def rotate(self, value):
    self._rotate = msgbuffers.validate_bool(
      'SetAllActiveObjectLEDs.rotate', value)

  @property
  def makeRelative(self):
    "Anki.Vector.MakeRelativeMode makeRelative struct property."
    return self._makeRelative

  @makeRelative.setter
  def makeRelative(self, value):
    self._makeRelative = msgbuffers.validate_integer(
      'SetAllActiveObjectLEDs.makeRelative', value, 0, 255)

  def __init__(self, objectID=0, onColor=(0,) * 4, offColor=(0,) * 4, onPeriod_ms=(0,) * 4, offPeriod_ms=(0,) * 4, transitionOnPeriod_ms=(0,) * 4, transitionOffPeriod_ms=(0,) * 4, offset=(0,) * 4, relativeToX=0.0, relativeToY=0.0, rotate=False, makeRelative=Anki.Vector.MakeRelativeMode.RELATIVE_LED_MODE_OFF):
    self.objectID = objectID
    self.onColor = onColor
    self.offColor = offColor
    self.onPeriod_ms = onPeriod_ms
    self.offPeriod_ms = offPeriod_ms
    self.transitionOnPeriod_ms = transitionOnPeriod_ms
    self.transitionOffPeriod_ms = transitionOffPeriod_ms
    self.offset = offset
    self.relativeToX = relativeToX
    self.relativeToY = relativeToY
    self.rotate = rotate
    self.makeRelative = makeRelative

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetAllActiveObjectLEDs from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetAllActiveObjectLEDs.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 SetAllActiveObjectLEDs from the given BinaryReader."
    _objectID = reader.read('I')
    _onColor = reader.read_farray('I', 4)
    _offColor = reader.read_farray('I', 4)
    _onPeriod_ms = reader.read_farray('I', 4)
    _offPeriod_ms = reader.read_farray('I', 4)
    _transitionOnPeriod_ms = reader.read_farray('I', 4)
    _transitionOffPeriod_ms = reader.read_farray('I', 4)
    _offset = reader.read_farray('i', 4)
    _relativeToX = reader.read('f')
    _relativeToY = reader.read('f')
    _rotate = bool(reader.read('b'))
    _makeRelative = reader.read('B')
    return cls(_objectID, _onColor, _offColor, _onPeriod_ms, _offPeriod_ms, _transitionOnPeriod_ms, _transitionOffPeriod_ms, _offset, _relativeToX, _relativeToY, _rotate, _makeRelative)

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

  def pack_to(self, writer):
    "Writes the current SetAllActiveObjectLEDs to the given BinaryWriter."
    writer.write(self._objectID, 'I')
    writer.write_farray(self._onColor, 'I', 4)
    writer.write_farray(self._offColor, 'I', 4)
    writer.write_farray(self._onPeriod_ms, 'I', 4)
    writer.write_farray(self._offPeriod_ms, 'I', 4)
    writer.write_farray(self._transitionOnPeriod_ms, 'I', 4)
    writer.write_farray(self._transitionOffPeriod_ms, 'I', 4)
    writer.write_farray(self._offset, 'i', 4)
    writer.write(self._relativeToX, 'f')
    writer.write(self._relativeToY, 'f')
    writer.write(int(self._rotate), 'b')
    writer.write(self._makeRelative, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._objectID == other._objectID and
        self._onColor == other._onColor and
        self._offColor == other._offColor and
        self._onPeriod_ms == other._onPeriod_ms and
        self._offPeriod_ms == other._offPeriod_ms and
        self._transitionOnPeriod_ms == other._transitionOnPeriod_ms and
        self._transitionOffPeriod_ms == other._transitionOffPeriod_ms and
        self._offset == other._offset and
        self._relativeToX == other._relativeToX and
        self._relativeToY == other._relativeToY and
        self._rotate == other._rotate and
        self._makeRelative == other._makeRelative)
    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_farray(self._onColor, 'I', 4) +
      msgbuffers.size_farray(self._offColor, 'I', 4) +
      msgbuffers.size_farray(self._onPeriod_ms, 'I', 4) +
      msgbuffers.size_farray(self._offPeriod_ms, 'I', 4) +
      msgbuffers.size_farray(self._transitionOnPeriod_ms, 'I', 4) +
      msgbuffers.size_farray(self._transitionOffPeriod_ms, 'I', 4) +
      msgbuffers.size_farray(self._offset, 'i', 4) +
      msgbuffers.size(self._relativeToX, 'f') +
      msgbuffers.size(self._relativeToY, 'f') +
      msgbuffers.size(self._rotate, 'b') +
      msgbuffers.size(self._makeRelative, 'B'))

  def __str__(self):
    return '{type}(objectID={objectID}, onColor={onColor}, offColor={offColor}, onPeriod_ms={onPeriod_ms}, offPeriod_ms={offPeriod_ms}, transitionOnPeriod_ms={transitionOnPeriod_ms}, transitionOffPeriod_ms={transitionOffPeriod_ms}, offset={offset}, relativeToX={relativeToX}, relativeToY={relativeToY}, rotate={rotate}, makeRelative={makeRelative})'.format(
      type=type(self).__name__,
      objectID=self._objectID,
      onColor=msgbuffers.shorten_sequence(self._onColor),
      offColor=msgbuffers.shorten_sequence(self._offColor),
      onPeriod_ms=msgbuffers.shorten_sequence(self._onPeriod_ms),
      offPeriod_ms=msgbuffers.shorten_sequence(self._offPeriod_ms),
      transitionOnPeriod_ms=msgbuffers.shorten_sequence(self._transitionOnPeriod_ms),
      transitionOffPeriod_ms=msgbuffers.shorten_sequence(self._transitionOffPeriod_ms),
      offset=msgbuffers.shorten_sequence(self._offset),
      relativeToX=self._relativeToX,
      relativeToY=self._relativeToY,
      rotate=self._rotate,
      makeRelative=self._makeRelative)

  def __repr__(self):
    return '{type}(objectID={objectID}, onColor={onColor}, offColor={offColor}, onPeriod_ms={onPeriod_ms}, offPeriod_ms={offPeriod_ms}, transitionOnPeriod_ms={transitionOnPeriod_ms}, transitionOffPeriod_ms={transitionOffPeriod_ms}, offset={offset}, relativeToX={relativeToX}, relativeToY={relativeToY}, rotate={rotate}, makeRelative={makeRelative})'.format(
      type=type(self).__name__,
      objectID=repr(self._objectID),
      onColor=repr(self._onColor),
      offColor=repr(self._offColor),
      onPeriod_ms=repr(self._onPeriod_ms),
      offPeriod_ms=repr(self._offPeriod_ms),
      transitionOnPeriod_ms=repr(self._transitionOnPeriod_ms),
      transitionOffPeriod_ms=repr(self._transitionOffPeriod_ms),
      offset=repr(self._offset),
      relativeToX=repr(self._relativeToX),
      relativeToY=repr(self._relativeToY),
      rotate=repr(self._rotate),
      makeRelative=repr(self._makeRelative))

Anki.Vector.ExternalInterface.SetAllActiveObjectLEDs = SetAllActiveObjectLEDs
del SetAllActiveObjectLEDs


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

  __slots__ = (
    '_onColor',                # uint_32[3]
    '_offColor',               # uint_32[3]
    '_onPeriod_ms',            # uint_32[3]
    '_offPeriod_ms',           # uint_32[3]
    '_transitionOnPeriod_ms',  # uint_32[3]
    '_transitionOffPeriod_ms', # uint_32[3]
    '_offset',                 # int_32[3]
  )

  @property
  def onColor(self):
    "uint_32[3] onColor struct property."
    return self._onColor

  @onColor.setter
  def onColor(self, value):
    self._onColor = msgbuffers.validate_farray(
      'SetBackpackLEDs.onColor', value, 3,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 4294967295))

  @property
  def offColor(self):
    "uint_32[3] offColor struct property."
    return self._offColor

  @offColor.setter
  def offColor(self, value):
    self._offColor = msgbuffers.validate_farray(
      'SetBackpackLEDs.offColor', value, 3,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 4294967295))

  @property
  def onPeriod_ms(self):
    "uint_32[3] onPeriod_ms struct property."
    return self._onPeriod_ms

  @onPeriod_ms.setter
  def onPeriod_ms(self, value):
    self._onPeriod_ms = msgbuffers.validate_farray(
      'SetBackpackLEDs.onPeriod_ms', value, 3,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 4294967295))

  @property
  def offPeriod_ms(self):
    "uint_32[3] offPeriod_ms struct property."
    return self._offPeriod_ms

  @offPeriod_ms.setter
  def offPeriod_ms(self, value):
    self._offPeriod_ms = msgbuffers.validate_farray(
      'SetBackpackLEDs.offPeriod_ms', value, 3,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 4294967295))

  @property
  def transitionOnPeriod_ms(self):
    "uint_32[3] transitionOnPeriod_ms struct property."
    return self._transitionOnPeriod_ms

  @transitionOnPeriod_ms.setter
  def transitionOnPeriod_ms(self, value):
    self._transitionOnPeriod_ms = msgbuffers.validate_farray(
      'SetBackpackLEDs.transitionOnPeriod_ms', value, 3,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 4294967295))

  @property
  def transitionOffPeriod_ms(self):
    "uint_32[3] transitionOffPeriod_ms struct property."
    return self._transitionOffPeriod_ms

  @transitionOffPeriod_ms.setter
  def transitionOffPeriod_ms(self, value):
    self._transitionOffPeriod_ms = msgbuffers.validate_farray(
      'SetBackpackLEDs.transitionOffPeriod_ms', value, 3,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 4294967295))

  @property
  def offset(self):
    "int_32[3] offset struct property."
    return self._offset

  @offset.setter
  def offset(self, value):
    self._offset = msgbuffers.validate_farray(
      'SetBackpackLEDs.offset', value, 3,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, -2147483648, 2147483647))

  def __init__(self, onColor=(0,) * 3, offColor=(0,) * 3, onPeriod_ms=(0,) * 3, offPeriod_ms=(0,) * 3, transitionOnPeriod_ms=(0,) * 3, transitionOffPeriod_ms=(0,) * 3, offset=(0,) * 3):
    self.onColor = onColor
    self.offColor = offColor
    self.onPeriod_ms = onPeriod_ms
    self.offPeriod_ms = offPeriod_ms
    self.transitionOnPeriod_ms = transitionOnPeriod_ms
    self.transitionOffPeriod_ms = transitionOffPeriod_ms
    self.offset = offset

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetBackpackLEDs from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetBackpackLEDs.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 SetBackpackLEDs from the given BinaryReader."
    _onColor = reader.read_farray('I', 3)
    _offColor = reader.read_farray('I', 3)
    _onPeriod_ms = reader.read_farray('I', 3)
    _offPeriod_ms = reader.read_farray('I', 3)
    _transitionOnPeriod_ms = reader.read_farray('I', 3)
    _transitionOffPeriod_ms = reader.read_farray('I', 3)
    _offset = reader.read_farray('i', 3)
    return cls(_onColor, _offColor, _onPeriod_ms, _offPeriod_ms, _transitionOnPeriod_ms, _transitionOffPeriod_ms, _offset)

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

  def pack_to(self, writer):
    "Writes the current SetBackpackLEDs to the given BinaryWriter."
    writer.write_farray(self._onColor, 'I', 3)
    writer.write_farray(self._offColor, 'I', 3)
    writer.write_farray(self._onPeriod_ms, 'I', 3)
    writer.write_farray(self._offPeriod_ms, 'I', 3)
    writer.write_farray(self._transitionOnPeriod_ms, 'I', 3)
    writer.write_farray(self._transitionOffPeriod_ms, 'I', 3)
    writer.write_farray(self._offset, 'i', 3)

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._onColor == other._onColor and
        self._offColor == other._offColor and
        self._onPeriod_ms == other._onPeriod_ms and
        self._offPeriod_ms == other._offPeriod_ms and
        self._transitionOnPeriod_ms == other._transitionOnPeriod_ms and
        self._transitionOffPeriod_ms == other._transitionOffPeriod_ms and
        self._offset == other._offset)
    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_farray(self._onColor, 'I', 3) +
      msgbuffers.size_farray(self._offColor, 'I', 3) +
      msgbuffers.size_farray(self._onPeriod_ms, 'I', 3) +
      msgbuffers.size_farray(self._offPeriod_ms, 'I', 3) +
      msgbuffers.size_farray(self._transitionOnPeriod_ms, 'I', 3) +
      msgbuffers.size_farray(self._transitionOffPeriod_ms, 'I', 3) +
      msgbuffers.size_farray(self._offset, 'i', 3))

  def __str__(self):
    return '{type}(onColor={onColor}, offColor={offColor}, onPeriod_ms={onPeriod_ms}, offPeriod_ms={offPeriod_ms}, transitionOnPeriod_ms={transitionOnPeriod_ms}, transitionOffPeriod_ms={transitionOffPeriod_ms}, offset={offset})'.format(
      type=type(self).__name__,
      onColor=msgbuffers.shorten_sequence(self._onColor),
      offColor=msgbuffers.shorten_sequence(self._offColor),
      onPeriod_ms=msgbuffers.shorten_sequence(self._onPeriod_ms),
      offPeriod_ms=msgbuffers.shorten_sequence(self._offPeriod_ms),
      transitionOnPeriod_ms=msgbuffers.shorten_sequence(self._transitionOnPeriod_ms),
      transitionOffPeriod_ms=msgbuffers.shorten_sequence(self._transitionOffPeriod_ms),
      offset=msgbuffers.shorten_sequence(self._offset))

  def __repr__(self):
    return '{type}(onColor={onColor}, offColor={offColor}, onPeriod_ms={onPeriod_ms}, offPeriod_ms={offPeriod_ms}, transitionOnPeriod_ms={transitionOnPeriod_ms}, transitionOffPeriod_ms={transitionOffPeriod_ms}, offset={offset})'.format(
      type=type(self).__name__,
      onColor=repr(self._onColor),
      offColor=repr(self._offColor),
      onPeriod_ms=repr(self._onPeriod_ms),
      offPeriod_ms=repr(self._offPeriod_ms),
      transitionOnPeriod_ms=repr(self._transitionOnPeriod_ms),
      transitionOffPeriod_ms=repr(self._transitionOffPeriod_ms),
      offset=repr(self._offset))

Anki.Vector.ExternalInterface.SetBackpackLEDs = SetBackpackLEDs
del SetBackpackLEDs


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

  __slots__ = (
    '_enable',   # bool
    '_objectID', # int_32
  )

  @property
  def enable(self):
    "bool enable struct property."
    return self._enable

  @enable.setter
  def enable(self, value):
    self._enable = msgbuffers.validate_bool(
      'EnableLightStates.enable', value)

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

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

  def __init__(self, enable=False, objectID=-1):
    self.enable = enable
    self.objectID = objectID

  @classmethod
  def unpack(cls, buffer):
    "Reads a new EnableLightStates from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('EnableLightStates.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 EnableLightStates from the given BinaryReader."
    _enable = bool(reader.read('b'))
    _objectID = reader.read('i')
    return cls(_enable, _objectID)

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

  def pack_to(self, writer):
    "Writes the current EnableLightStates to the given BinaryWriter."
    writer.write(int(self._enable), 'b')
    writer.write(self._objectID, 'i')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._enable == other._enable 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._enable, 'b') +
      msgbuffers.size(self._objectID, 'i'))

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

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

Anki.Vector.ExternalInterface.EnableLightStates = EnableLightStates
del EnableLightStates


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

  __slots__ = (
    '_objectID', # uint_32
    '_trigger',  # Anki.Vector.CubeAnimationTrigger
  )

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

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

  @property
  def trigger(self):
    "Anki.Vector.CubeAnimationTrigger trigger struct property."
    return self._trigger

  @trigger.setter
  def trigger(self, value):
    self._trigger = msgbuffers.validate_integer(
      'PlayCubeAnim.trigger', value, -2147483648, 2147483647)

  def __init__(self, objectID=0, trigger=Anki.Vector.CubeAnimationTrigger.Carrying):
    self.objectID = objectID
    self.trigger = trigger

  @classmethod
  def unpack(cls, buffer):
    "Reads a new PlayCubeAnim from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('PlayCubeAnim.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 PlayCubeAnim from the given BinaryReader."
    _objectID = reader.read('I')
    _trigger = reader.read('i')
    return cls(_objectID, _trigger)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._objectID == other._objectID and
        self._trigger == other._trigger)
    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._trigger, 'i'))

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

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

Anki.Vector.ExternalInterface.PlayCubeAnim = PlayCubeAnim
del PlayCubeAnim


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

  __slots__ = (
    '_objectID', # uint_32
    '_trigger',  # Anki.Vector.CubeAnimationTrigger
  )

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

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

  @property
  def trigger(self):
    "Anki.Vector.CubeAnimationTrigger trigger struct property."
    return self._trigger

  @trigger.setter
  def trigger(self, value):
    self._trigger = msgbuffers.validate_integer(
      'StopCubeAnim.trigger', value, -2147483648, 2147483647)

  def __init__(self, objectID=0, trigger=Anki.Vector.CubeAnimationTrigger.Carrying):
    self.objectID = objectID
    self.trigger = trigger

  @classmethod
  def unpack(cls, buffer):
    "Reads a new StopCubeAnim from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('StopCubeAnim.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 StopCubeAnim from the given BinaryReader."
    _objectID = reader.read('I')
    _trigger = reader.read('i')
    return cls(_objectID, _trigger)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._objectID == other._objectID and
        self._trigger == other._trigger)
    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._trigger, 'i'))

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

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

Anki.Vector.ExternalInterface.StopCubeAnim = StopCubeAnim
del StopCubeAnim


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

  __slots__ = (
    '_stage', # Anki.Vector.OnboardingStages
  )

  @property
  def stage(self):
    "Anki.Vector.OnboardingStages stage struct property."
    return self._stage

  @stage.setter
  def stage(self, value):
    self._stage = msgbuffers.validate_integer(
      'SetOnboardingStage.stage', value, 0, 255)

  def __init__(self, stage=Anki.Vector.OnboardingStages.NotStarted):
    self.stage = stage

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetOnboardingStage from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetOnboardingStage.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 SetOnboardingStage from the given BinaryReader."
    _stage = reader.read('B')
    return cls(_stage)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._stage == other._stage
    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'))

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

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

Anki.Vector.ExternalInterface.SetOnboardingStage = SetOnboardingStage
del SetOnboardingStage


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new GetEmotions from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('GetEmotions.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 GetEmotions from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current GetEmotions 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.GetEmotions = GetEmotions
del GetEmotions


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

  __slots__ = (
    '_emotionType', # Anki.Vector.EmotionType
    '_newVal',      # float_32
  )

  @property
  def emotionType(self):
    "Anki.Vector.EmotionType emotionType struct property."
    return self._emotionType

  @emotionType.setter
  def emotionType(self, value):
    self._emotionType = msgbuffers.validate_integer(
      'SetEmotion.emotionType', value, 0, 255)

  @property
  def newVal(self):
    "float_32 newVal struct property."
    return self._newVal

  @newVal.setter
  def newVal(self, value):
    self._newVal = msgbuffers.validate_float(
      'SetEmotion.newVal', value, 'f')

  def __init__(self, emotionType=Anki.Vector.EmotionType.Happy, newVal=0.0):
    self.emotionType = emotionType
    self.newVal = newVal

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetEmotion from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetEmotion.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 SetEmotion from the given BinaryReader."
    _emotionType = reader.read('B')
    _newVal = reader.read('f')
    return cls(_emotionType, _newVal)

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

  def pack_to(self, writer):
    "Writes the current SetEmotion to the given BinaryWriter."
    writer.write(self._emotionType, 'B')
    writer.write(self._newVal, 'f')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._emotionType == other._emotionType and
        self._newVal == other._newVal)
    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._emotionType, 'B') +
      msgbuffers.size(self._newVal, 'f'))

  def __str__(self):
    return '{type}(emotionType={emotionType}, newVal={newVal})'.format(
      type=type(self).__name__,
      emotionType=self._emotionType,
      newVal=self._newVal)

  def __repr__(self):
    return '{type}(emotionType={emotionType}, newVal={newVal})'.format(
      type=type(self).__name__,
      emotionType=repr(self._emotionType),
      newVal=repr(self._newVal))

Anki.Vector.ExternalInterface.SetEmotion = SetEmotion
del SetEmotion


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

  __slots__ = (
    '_emotionType',    # Anki.Vector.EmotionType
    '_deltaVal',       # float_32
    '_uniqueIdString', # string[uint_8]
  )

  @property
  def emotionType(self):
    "Anki.Vector.EmotionType emotionType struct property."
    return self._emotionType

  @emotionType.setter
  def emotionType(self, value):
    self._emotionType = msgbuffers.validate_integer(
      'AddToEmotion.emotionType', value, 0, 255)

  @property
  def deltaVal(self):
    "float_32 deltaVal struct property."
    return self._deltaVal

  @deltaVal.setter
  def deltaVal(self, value):
    self._deltaVal = msgbuffers.validate_float(
      'AddToEmotion.deltaVal', value, 'f')

  @property
  def uniqueIdString(self):
    "string[uint_8] uniqueIdString struct property."
    return self._uniqueIdString

  @uniqueIdString.setter
  def uniqueIdString(self, value):
    self._uniqueIdString = msgbuffers.validate_string(
      'AddToEmotion.uniqueIdString', value, 255)

  def __init__(self, emotionType=Anki.Vector.EmotionType.Happy, deltaVal=0.0, uniqueIdString=''):
    self.emotionType = emotionType
    self.deltaVal = deltaVal
    self.uniqueIdString = uniqueIdString

  @classmethod
  def unpack(cls, buffer):
    "Reads a new AddToEmotion from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('AddToEmotion.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 AddToEmotion from the given BinaryReader."
    _emotionType = reader.read('B')
    _deltaVal = reader.read('f')
    _uniqueIdString = reader.read_string('B')
    return cls(_emotionType, _deltaVal, _uniqueIdString)

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

  def pack_to(self, writer):
    "Writes the current AddToEmotion to the given BinaryWriter."
    writer.write(self._emotionType, 'B')
    writer.write(self._deltaVal, 'f')
    writer.write_string(self._uniqueIdString, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._emotionType == other._emotionType and
        self._deltaVal == other._deltaVal and
        self._uniqueIdString == other._uniqueIdString)
    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._emotionType, 'B') +
      msgbuffers.size(self._deltaVal, 'f') +
      msgbuffers.size_string(self._uniqueIdString, 'B'))

  def __str__(self):
    return '{type}(emotionType={emotionType}, deltaVal={deltaVal}, uniqueIdString={uniqueIdString})'.format(
      type=type(self).__name__,
      emotionType=self._emotionType,
      deltaVal=self._deltaVal,
      uniqueIdString=msgbuffers.shorten_string(self._uniqueIdString))

  def __repr__(self):
    return '{type}(emotionType={emotionType}, deltaVal={deltaVal}, uniqueIdString={uniqueIdString})'.format(
      type=type(self).__name__,
      emotionType=repr(self._emotionType),
      deltaVal=repr(self._deltaVal),
      uniqueIdString=repr(self._uniqueIdString))

Anki.Vector.ExternalInterface.AddToEmotion = AddToEmotion
del AddToEmotion


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

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

  @property
  def emotionEventName(self):
    "string[uint_8] emotionEventName struct property."
    return self._emotionEventName

  @emotionEventName.setter
  def emotionEventName(self, value):
    self._emotionEventName = msgbuffers.validate_string(
      'TriggerEmotionEvent.emotionEventName', value, 255)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new TriggerEmotionEvent from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('TriggerEmotionEvent.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 TriggerEmotionEvent from the given BinaryReader."
    _emotionEventName = reader.read_string('B')
    return cls(_emotionEventName)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._emotionEventName == other._emotionEventName
    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._emotionEventName, 'B'))

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

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

Anki.Vector.ExternalInterface.TriggerEmotionEvent = TriggerEmotionEvent
del TriggerEmotionEvent


class MoodMessageUnion(object):
  "Generated message-passing union."

  __slots__ = ('_tag', '_data')

  class Tag(object):
    "The type indicator for this union."
    GetEmotions         = 0 # Anki.Vector.ExternalInterface.GetEmotions
    SetEmotion          = 1 # Anki.Vector.ExternalInterface.SetEmotion
    AddToEmotion        = 2 # Anki.Vector.ExternalInterface.AddToEmotion
    TriggerEmotionEvent = 3 # Anki.Vector.ExternalInterface.TriggerEmotionEvent

  @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 GetEmotions(self):
    "Anki.Vector.ExternalInterface.GetEmotions GetEmotions union property."
    msgbuffers.safety_check_tag('GetEmotions', self._tag, self.Tag.GetEmotions, self._tags_by_value)
    return self._data

  @GetEmotions.setter
  def GetEmotions(self, value):
    self._data = msgbuffers.validate_object(
      'MoodMessageUnion.GetEmotions', value, Anki.Vector.ExternalInterface.GetEmotions)
    self._tag = self.Tag.GetEmotions

  @property
  def SetEmotion(self):
    "Anki.Vector.ExternalInterface.SetEmotion SetEmotion union property."
    msgbuffers.safety_check_tag('SetEmotion', self._tag, self.Tag.SetEmotion, self._tags_by_value)
    return self._data

  @SetEmotion.setter
  def SetEmotion(self, value):
    self._data = msgbuffers.validate_object(
      'MoodMessageUnion.SetEmotion', value, Anki.Vector.ExternalInterface.SetEmotion)
    self._tag = self.Tag.SetEmotion

  @property
  def AddToEmotion(self):
    "Anki.Vector.ExternalInterface.AddToEmotion AddToEmotion union property."
    msgbuffers.safety_check_tag('AddToEmotion', self._tag, self.Tag.AddToEmotion, self._tags_by_value)
    return self._data

  @AddToEmotion.setter
  def AddToEmotion(self, value):
    self._data = msgbuffers.validate_object(
      'MoodMessageUnion.AddToEmotion', value, Anki.Vector.ExternalInterface.AddToEmotion)
    self._tag = self.Tag.AddToEmotion

  @property
  def TriggerEmotionEvent(self):
    "Anki.Vector.ExternalInterface.TriggerEmotionEvent TriggerEmotionEvent union property."
    msgbuffers.safety_check_tag('TriggerEmotionEvent', self._tag, self.Tag.TriggerEmotionEvent, self._tags_by_value)
    return self._data

  @TriggerEmotionEvent.setter
  def TriggerEmotionEvent(self, value):
    self._data = msgbuffers.validate_object(
      'MoodMessageUnion.TriggerEmotionEvent', value, Anki.Vector.ExternalInterface.TriggerEmotionEvent)
    self._tag = self.Tag.TriggerEmotionEvent

  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 MoodMessageUnion from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('MoodMessageUnion.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 MoodMessageUnion 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('MoodMessageUnion attempted to unpack unknown tag {tag}.'.format(tag=tag))

  def pack(self):
    "Writes the current MoodMessageUnion, 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 MoodMessageUnion.')

  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 < 4:
      return self._tag_size_methods[self._tag](self._data)
    else:
      return 1

  def __str__(self):
    if 0 <= self._tag < 4:
      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 < 4:
      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(
    GetEmotions=0,
    SetEmotion=1,
    AddToEmotion=2,
    TriggerEmotionEvent=3,
  )

  _tags_by_value = dict()
  _tags_by_value[0] = 'GetEmotions'
  _tags_by_value[1] = 'SetEmotion'
  _tags_by_value[2] = 'AddToEmotion'
  _tags_by_value[3] = 'TriggerEmotionEvent'
  

  _tag_unpack_methods = dict()
  _tag_unpack_methods[0] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.GetEmotions.unpack_from)
  _tag_unpack_methods[1] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetEmotion.unpack_from)
  _tag_unpack_methods[2] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.AddToEmotion.unpack_from)
  _tag_unpack_methods[3] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.TriggerEmotionEvent.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[3] = 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[3] = lambda value: msgbuffers.size_object(value)
  

  _type_by_tag_value = dict()
  _type_by_tag_value[0] = lambda : Anki.Vector.ExternalInterface.GetEmotions
  _type_by_tag_value[1] = lambda : Anki.Vector.ExternalInterface.SetEmotion
  _type_by_tag_value[2] = lambda : Anki.Vector.ExternalInterface.AddToEmotion
  _type_by_tag_value[3] = lambda : Anki.Vector.ExternalInterface.TriggerEmotionEvent
  

Anki.Vector.ExternalInterface.MoodMessageUnion = MoodMessageUnion
del MoodMessageUnion


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

  __slots__ = (
    '_MoodMessageUnion', # Anki.Vector.ExternalInterface.MoodMessageUnion
  )

  @property
  def MoodMessageUnion(self):
    "Anki.Vector.ExternalInterface.MoodMessageUnion MoodMessageUnion struct property."
    return self._MoodMessageUnion

  @MoodMessageUnion.setter
  def MoodMessageUnion(self, value):
    self._MoodMessageUnion = msgbuffers.validate_object(
      'MoodMessage.MoodMessageUnion', value, Anki.Vector.ExternalInterface.MoodMessageUnion)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new MoodMessage from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('MoodMessage.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 MoodMessage from the given BinaryReader."
    _MoodMessageUnion = reader.read_object(Anki.Vector.ExternalInterface.MoodMessageUnion.unpack_from)
    return cls(_MoodMessageUnion)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._MoodMessageUnion == other._MoodMessageUnion
    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._MoodMessageUnion))

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

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

Anki.Vector.ExternalInterface.MoodMessage = MoodMessage
del MoodMessage


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

  __slots__ = (
    '_varName',  # string[uint_8]
    '_tryValue', # string[uint_8]
  )

  @property
  def varName(self):
    "string[uint_8] varName struct property."
    return self._varName

  @varName.setter
  def varName(self, value):
    self._varName = msgbuffers.validate_string(
      'SetDebugConsoleVarMessage.varName', value, 255)

  @property
  def tryValue(self):
    "string[uint_8] tryValue struct property."
    return self._tryValue

  @tryValue.setter
  def tryValue(self, value):
    self._tryValue = msgbuffers.validate_string(
      'SetDebugConsoleVarMessage.tryValue', value, 255)

  def __init__(self, varName='', tryValue=''):
    self.varName = varName
    self.tryValue = tryValue

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetDebugConsoleVarMessage from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetDebugConsoleVarMessage.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 SetDebugConsoleVarMessage from the given BinaryReader."
    _varName = reader.read_string('B')
    _tryValue = reader.read_string('B')
    return cls(_varName, _tryValue)

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

  def pack_to(self, writer):
    "Writes the current SetDebugConsoleVarMessage to the given BinaryWriter."
    writer.write_string(self._varName, 'B')
    writer.write_string(self._tryValue, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._varName == other._varName and
        self._tryValue == other._tryValue)
    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._tryValue, 'B'))

  def __str__(self):
    return '{type}(varName={varName}, tryValue={tryValue})'.format(
      type=type(self).__name__,
      varName=msgbuffers.shorten_string(self._varName),
      tryValue=msgbuffers.shorten_string(self._tryValue))

  def __repr__(self):
    return '{type}(varName={varName}, tryValue={tryValue})'.format(
      type=type(self).__name__,
      varName=repr(self._varName),
      tryValue=repr(self._tryValue))

Anki.Vector.ExternalInterface.SetDebugConsoleVarMessage = SetDebugConsoleVarMessage
del SetDebugConsoleVarMessage


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

  __slots__ = (
    '_varName',  # string[uint_8]
    '_tryValue', # string[uint_8]
  )

  @property
  def varName(self):
    "string[uint_8] varName struct property."
    return self._varName

  @varName.setter
  def varName(self, value):
    self._varName = msgbuffers.validate_string(
      'SetAnimDebugConsoleVarMessage.varName', value, 255)

  @property
  def tryValue(self):
    "string[uint_8] tryValue struct property."
    return self._tryValue

  @tryValue.setter
  def tryValue(self, value):
    self._tryValue = msgbuffers.validate_string(
      'SetAnimDebugConsoleVarMessage.tryValue', value, 255)

  def __init__(self, varName='', tryValue=''):
    self.varName = varName
    self.tryValue = tryValue

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetAnimDebugConsoleVarMessage from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetAnimDebugConsoleVarMessage.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 SetAnimDebugConsoleVarMessage from the given BinaryReader."
    _varName = reader.read_string('B')
    _tryValue = reader.read_string('B')
    return cls(_varName, _tryValue)

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

  def pack_to(self, writer):
    "Writes the current SetAnimDebugConsoleVarMessage to the given BinaryWriter."
    writer.write_string(self._varName, 'B')
    writer.write_string(self._tryValue, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._varName == other._varName and
        self._tryValue == other._tryValue)
    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._tryValue, 'B'))

  def __str__(self):
    return '{type}(varName={varName}, tryValue={tryValue})'.format(
      type=type(self).__name__,
      varName=msgbuffers.shorten_string(self._varName),
      tryValue=msgbuffers.shorten_string(self._tryValue))

  def __repr__(self):
    return '{type}(varName={varName}, tryValue={tryValue})'.format(
      type=type(self).__name__,
      varName=repr(self._varName),
      tryValue=repr(self._tryValue))

Anki.Vector.ExternalInterface.SetAnimDebugConsoleVarMessage = SetAnimDebugConsoleVarMessage
del SetAnimDebugConsoleVarMessage


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

  __slots__ = (
    '_funcName', # string[uint_8]
    '_funcArgs', # string[uint_8]
  )

  @property
  def funcName(self):
    "string[uint_8] funcName struct property."
    return self._funcName

  @funcName.setter
  def funcName(self, value):
    self._funcName = msgbuffers.validate_string(
      'RunDebugConsoleFuncMessage.funcName', value, 255)

  @property
  def funcArgs(self):
    "string[uint_8] funcArgs struct property."
    return self._funcArgs

  @funcArgs.setter
  def funcArgs(self, value):
    self._funcArgs = msgbuffers.validate_string(
      'RunDebugConsoleFuncMessage.funcArgs', value, 255)

  def __init__(self, funcName='', funcArgs=''):
    self.funcName = funcName
    self.funcArgs = funcArgs

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RunDebugConsoleFuncMessage from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RunDebugConsoleFuncMessage.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 RunDebugConsoleFuncMessage from the given BinaryReader."
    _funcName = reader.read_string('B')
    _funcArgs = reader.read_string('B')
    return cls(_funcName, _funcArgs)

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

  def pack_to(self, writer):
    "Writes the current RunDebugConsoleFuncMessage to the given BinaryWriter."
    writer.write_string(self._funcName, 'B')
    writer.write_string(self._funcArgs, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._funcName == other._funcName and
        self._funcArgs == other._funcArgs)
    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._funcArgs, 'B'))

  def __str__(self):
    return '{type}(funcName={funcName}, funcArgs={funcArgs})'.format(
      type=type(self).__name__,
      funcName=msgbuffers.shorten_string(self._funcName),
      funcArgs=msgbuffers.shorten_string(self._funcArgs))

  def __repr__(self):
    return '{type}(funcName={funcName}, funcArgs={funcArgs})'.format(
      type=type(self).__name__,
      funcName=repr(self._funcName),
      funcArgs=repr(self._funcArgs))

Anki.Vector.ExternalInterface.RunDebugConsoleFuncMessage = RunDebugConsoleFuncMessage
del RunDebugConsoleFuncMessage


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

  __slots__ = (
    '_funcName', # string[uint_8]
    '_funcArgs', # string[uint_8]
  )

  @property
  def funcName(self):
    "string[uint_8] funcName struct property."
    return self._funcName

  @funcName.setter
  def funcName(self, value):
    self._funcName = msgbuffers.validate_string(
      'RunAnimDebugConsoleFuncMessage.funcName', value, 255)

  @property
  def funcArgs(self):
    "string[uint_8] funcArgs struct property."
    return self._funcArgs

  @funcArgs.setter
  def funcArgs(self, value):
    self._funcArgs = msgbuffers.validate_string(
      'RunAnimDebugConsoleFuncMessage.funcArgs', value, 255)

  def __init__(self, funcName='', funcArgs=''):
    self.funcName = funcName
    self.funcArgs = funcArgs

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RunAnimDebugConsoleFuncMessage from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RunAnimDebugConsoleFuncMessage.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 RunAnimDebugConsoleFuncMessage from the given BinaryReader."
    _funcName = reader.read_string('B')
    _funcArgs = reader.read_string('B')
    return cls(_funcName, _funcArgs)

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

  def pack_to(self, writer):
    "Writes the current RunAnimDebugConsoleFuncMessage to the given BinaryWriter."
    writer.write_string(self._funcName, 'B')
    writer.write_string(self._funcArgs, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._funcName == other._funcName and
        self._funcArgs == other._funcArgs)
    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._funcArgs, 'B'))

  def __str__(self):
    return '{type}(funcName={funcName}, funcArgs={funcArgs})'.format(
      type=type(self).__name__,
      funcName=msgbuffers.shorten_string(self._funcName),
      funcArgs=msgbuffers.shorten_string(self._funcArgs))

  def __repr__(self):
    return '{type}(funcName={funcName}, funcArgs={funcArgs})'.format(
      type=type(self).__name__,
      funcName=repr(self._funcName),
      funcArgs=repr(self._funcArgs))

Anki.Vector.ExternalInterface.RunAnimDebugConsoleFuncMessage = RunAnimDebugConsoleFuncMessage
del RunAnimDebugConsoleFuncMessage


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

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

  @property
  def varName(self):
    "string[uint_8] varName struct property."
    return self._varName

  @varName.setter
  def varName(self, value):
    self._varName = msgbuffers.validate_string(
      'GetDebugConsoleVarMessage.varName', value, 255)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new GetDebugConsoleVarMessage from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('GetDebugConsoleVarMessage.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 GetDebugConsoleVarMessage from the given BinaryReader."
    _varName = reader.read_string('B')
    return cls(_varName)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._varName == other._varName
    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'))

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

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

Anki.Vector.ExternalInterface.GetDebugConsoleVarMessage = GetDebugConsoleVarMessage
del GetDebugConsoleVarMessage


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new GetAllDebugConsoleVarMessage from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('GetAllDebugConsoleVarMessage.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 GetAllDebugConsoleVarMessage from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current GetAllDebugConsoleVarMessage 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.GetAllDebugConsoleVarMessage = GetAllDebugConsoleVarMessage
del GetAllDebugConsoleVarMessage


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new GetJsonDasLogsMessage from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('GetJsonDasLogsMessage.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 GetJsonDasLogsMessage from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current GetJsonDasLogsMessage 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.GetJsonDasLogsMessage = GetJsonDasLogsMessage
del GetJsonDasLogsMessage


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

  __slots__ = (
    '_enabled', # bool
  )

  @property
  def enabled(self):
    "bool enabled struct property."
    return self._enabled

  @enabled.setter
  def enabled(self, value):
    self._enabled = msgbuffers.validate_bool(
      'SetEnableSpeedChooser.enabled', value)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetEnableSpeedChooser from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetEnableSpeedChooser.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 SetEnableSpeedChooser from the given BinaryReader."
    _enabled = bool(reader.read('b'))
    return cls(_enabled)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._enabled == other._enabled
    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._enabled, 'b'))

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

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

Anki.Vector.ExternalInterface.SetEnableSpeedChooser = SetEnableSpeedChooser
del SetEnableSpeedChooser


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

  __slots__ = (
    '_length_ms', # uint_32
  )

  @property
  def length_ms(self):
    "uint_32 length_ms struct property."
    return self._length_ms

  @length_ms.setter
  def length_ms(self, value):
    self._length_ms = msgbuffers.validate_integer(
      'LogRawCliffData.length_ms', value, 0, 4294967295)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new LogRawCliffData from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('LogRawCliffData.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 LogRawCliffData from the given BinaryReader."
    _length_ms = reader.read('I')
    return cls(_length_ms)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._length_ms == other._length_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._length_ms, 'I'))

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

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

Anki.Vector.ExternalInterface.LogRawCliffData = LogRawCliffData
del LogRawCliffData


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

  __slots__ = (
    '_length_ms', # uint_32
  )

  @property
  def length_ms(self):
    "uint_32 length_ms struct property."
    return self._length_ms

  @length_ms.setter
  def length_ms(self, value):
    self._length_ms = msgbuffers.validate_integer(
      'LogRawProxData.length_ms', value, 0, 4294967295)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new LogRawProxData from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('LogRawProxData.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 LogRawProxData from the given BinaryReader."
    _length_ms = reader.read('I')
    return cls(_length_ms)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._length_ms == other._length_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._length_ms, 'I'))

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

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

Anki.Vector.ExternalInterface.LogRawProxData = LogRawProxData
del LogRawProxData


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ConnectToCube from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ConnectToCube.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 ConnectToCube from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current ConnectToCube 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.ConnectToCube = ConnectToCube
del ConnectToCube


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

  __slots__ = (
    '_gracePeriod_sec', # float_32
  )

  @property
  def gracePeriod_sec(self):
    "float_32 gracePeriod_sec struct property."
    return self._gracePeriod_sec

  @gracePeriod_sec.setter
  def gracePeriod_sec(self, value):
    self._gracePeriod_sec = msgbuffers.validate_float(
      'DisconnectFromCube.gracePeriod_sec', value, 'f')

  def __init__(self, gracePeriod_sec=0.0):
    self.gracePeriod_sec = gracePeriod_sec

  @classmethod
  def unpack(cls, buffer):
    "Reads a new DisconnectFromCube from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('DisconnectFromCube.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 DisconnectFromCube from the given BinaryReader."
    _gracePeriod_sec = reader.read('f')
    return cls(_gracePeriod_sec)

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

  def pack_to(self, writer):
    "Writes the current DisconnectFromCube to the given BinaryWriter."
    writer.write(self._gracePeriod_sec, 'f')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._gracePeriod_sec == other._gracePeriod_sec
    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._gracePeriod_sec, 'f'))

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

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

Anki.Vector.ExternalInterface.DisconnectFromCube = DisconnectFromCube
del DisconnectFromCube


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ForgetPreferredCube from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ForgetPreferredCube.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 ForgetPreferredCube from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current ForgetPreferredCube 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.ForgetPreferredCube = ForgetPreferredCube
del ForgetPreferredCube


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

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

  @property
  def factoryId(self):
    "string[uint_8] factoryId struct property."
    return self._factoryId

  @factoryId.setter
  def factoryId(self, value):
    self._factoryId = msgbuffers.validate_string(
      'SetPreferredCube.factoryId', value, 255)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetPreferredCube from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetPreferredCube.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 SetPreferredCube from the given BinaryReader."
    _factoryId = reader.read_string('B')
    return cls(_factoryId)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._factoryId == other._factoryId
    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._factoryId, 'B'))

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

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

Anki.Vector.ExternalInterface.SetPreferredCube = SetPreferredCube
del SetPreferredCube


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

  __slots__ = (
    '_enable', # bool
  )

  @property
  def enable(self):
    "bool enable struct property."
    return self._enable

  @enable.setter
  def enable(self, value):
    self._enable = msgbuffers.validate_bool(
      'SendAvailableObjects.enable', value)

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

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SendAvailableObjects from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SendAvailableObjects.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 SendAvailableObjects from the given BinaryReader."
    _enable = bool(reader.read('b'))
    return cls(_enable)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return self._enable == other._enable
    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._enable, 'b'))

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

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

Anki.Vector.ExternalInterface.SendAvailableObjects = SendAvailableObjects
del SendAvailableObjects


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SaveCalibrationImage from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SaveCalibrationImage.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 SaveCalibrationImage from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current SaveCalibrationImage 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.SaveCalibrationImage = SaveCalibrationImage
del SaveCalibrationImage


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ClearCalibrationImages from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ClearCalibrationImages.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 ClearCalibrationImages from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current ClearCalibrationImages 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.ClearCalibrationImages = ClearCalibrationImages
del ClearCalibrationImages


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ComputeCameraCalibration from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ComputeCameraCalibration.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 ComputeCameraCalibration from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current ComputeCameraCalibration 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.ComputeCameraCalibration = ComputeCameraCalibration
del ComputeCameraCalibration


class FileType(object):
  "Automatically-generated uint_8 enumeration."
  Animation = 0
  FaceImg   = 1

Anki.Vector.ExternalInterface.FileType = FileType
del FileType


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

  __slots__ = (
    '_fileBytes',    # uint_8[uint_16]
    '_filePart',     # uint_16
    '_numFileParts', # uint_16
    '_filename',     # string[uint_8]
    '_fileType',     # Anki.Vector.ExternalInterface.FileType
  )

  @property
  def fileBytes(self):
    "uint_8[uint_16] fileBytes struct property."
    return self._fileBytes

  @fileBytes.setter
  def fileBytes(self, value):
    self._fileBytes = msgbuffers.validate_varray(
      'TransferFile.fileBytes', value, 65535,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 255))

  @property
  def filePart(self):
    "uint_16 filePart struct property."
    return self._filePart

  @filePart.setter
  def filePart(self, value):
    self._filePart = msgbuffers.validate_integer(
      'TransferFile.filePart', value, 0, 65535)

  @property
  def numFileParts(self):
    "uint_16 numFileParts struct property."
    return self._numFileParts

  @numFileParts.setter
  def numFileParts(self, value):
    self._numFileParts = msgbuffers.validate_integer(
      'TransferFile.numFileParts', value, 0, 65535)

  @property
  def filename(self):
    "string[uint_8] filename struct property."
    return self._filename

  @filename.setter
  def filename(self, value):
    self._filename = msgbuffers.validate_string(
      'TransferFile.filename', value, 255)

  @property
  def fileType(self):
    "Anki.Vector.ExternalInterface.FileType fileType struct property."
    return self._fileType

  @fileType.setter
  def fileType(self, value):
    self._fileType = msgbuffers.validate_integer(
      'TransferFile.fileType', value, 0, 255)

  def __init__(self, fileBytes=(), filePart=0, numFileParts=0, filename='', fileType=Anki.Vector.ExternalInterface.FileType.Animation):
    self.fileBytes = fileBytes
    self.filePart = filePart
    self.numFileParts = numFileParts
    self.filename = filename
    self.fileType = fileType

  @classmethod
  def unpack(cls, buffer):
    "Reads a new TransferFile from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('TransferFile.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 TransferFile from the given BinaryReader."
    _fileBytes = reader.read_varray('B', 'H')
    _filePart = reader.read('H')
    _numFileParts = reader.read('H')
    _filename = reader.read_string('B')
    _fileType = reader.read('B')
    return cls(_fileBytes, _filePart, _numFileParts, _filename, _fileType)

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

  def pack_to(self, writer):
    "Writes the current TransferFile to the given BinaryWriter."
    writer.write_varray(self._fileBytes, 'B', 'H')
    writer.write(self._filePart, 'H')
    writer.write(self._numFileParts, 'H')
    writer.write_string(self._filename, 'B')
    writer.write(self._fileType, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._fileBytes == other._fileBytes and
        self._filePart == other._filePart and
        self._numFileParts == other._numFileParts and
        self._filename == other._filename and
        self._fileType == other._fileType)
    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._fileBytes, 'B', 'H') +
      msgbuffers.size(self._filePart, 'H') +
      msgbuffers.size(self._numFileParts, 'H') +
      msgbuffers.size_string(self._filename, 'B') +
      msgbuffers.size(self._fileType, 'B'))

  def __str__(self):
    return '{type}(fileBytes={fileBytes}, filePart={filePart}, numFileParts={numFileParts}, filename={filename}, fileType={fileType})'.format(
      type=type(self).__name__,
      fileBytes=msgbuffers.shorten_sequence(self._fileBytes),
      filePart=self._filePart,
      numFileParts=self._numFileParts,
      filename=msgbuffers.shorten_string(self._filename),
      fileType=self._fileType)

  def __repr__(self):
    return '{type}(fileBytes={fileBytes}, filePart={filePart}, numFileParts={numFileParts}, filename={filename}, fileType={fileType})'.format(
      type=type(self).__name__,
      fileBytes=repr(self._fileBytes),
      filePart=repr(self._filePart),
      numFileParts=repr(self._numFileParts),
      filename=repr(self._filename),
      fileType=repr(self._fileType))

Anki.Vector.ExternalInterface.TransferFile = TransferFile
del TransferFile


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

  __slots__ = (
    '_enableAutoExposure', # bool
    '_exposure_ms',        # uint_16
    '_gain',               # float_32
  )

  @property
  def enableAutoExposure(self):
    "bool enableAutoExposure struct property."
    return self._enableAutoExposure

  @enableAutoExposure.setter
  def enableAutoExposure(self, value):
    self._enableAutoExposure = msgbuffers.validate_bool(
      'SetCameraSettings.enableAutoExposure', value)

  @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(
      'SetCameraSettings.exposure_ms', value, 0, 65535)

  @property
  def gain(self):
    "float_32 gain struct property."
    return self._gain

  @gain.setter
  def gain(self, value):
    self._gain = msgbuffers.validate_float(
      'SetCameraSettings.gain', value, 'f')

  def __init__(self, enableAutoExposure=False, exposure_ms=0, gain=0.0):
    self.enableAutoExposure = enableAutoExposure
    self.exposure_ms = exposure_ms
    self.gain = gain

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetCameraSettings from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetCameraSettings.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 SetCameraSettings from the given BinaryReader."
    _enableAutoExposure = bool(reader.read('b'))
    _exposure_ms = reader.read('H')
    _gain = reader.read('f')
    return cls(_enableAutoExposure, _exposure_ms, _gain)

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

  def pack_to(self, writer):
    "Writes the current SetCameraSettings to the given BinaryWriter."
    writer.write(int(self._enableAutoExposure), 'b')
    writer.write(self._exposure_ms, 'H')
    writer.write(self._gain, 'f')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._enableAutoExposure == other._enableAutoExposure and
        self._exposure_ms == other._exposure_ms and
        self._gain == other._gain)
    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._enableAutoExposure, 'b') +
      msgbuffers.size(self._exposure_ms, 'H') +
      msgbuffers.size(self._gain, 'f'))

  def __str__(self):
    return '{type}(enableAutoExposure={enableAutoExposure}, exposure_ms={exposure_ms}, gain={gain})'.format(
      type=type(self).__name__,
      enableAutoExposure=self._enableAutoExposure,
      exposure_ms=self._exposure_ms,
      gain=self._gain)

  def __repr__(self):
    return '{type}(enableAutoExposure={enableAutoExposure}, exposure_ms={exposure_ms}, gain={gain})'.format(
      type=type(self).__name__,
      enableAutoExposure=repr(self._enableAutoExposure),
      exposure_ms=repr(self._exposure_ms),
      gain=repr(self._gain))

Anki.Vector.ExternalInterface.SetCameraSettings = SetCameraSettings
del SetCameraSettings


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RequestRobotSettings from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RequestRobotSettings.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 RequestRobotSettings from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current RequestRobotSettings 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.RequestRobotSettings = RequestRobotSettings
del RequestRobotSettings


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

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotHistoryRequest from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotHistoryRequest.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 RobotHistoryRequest from the given BinaryReader."
    return cls()

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

  def pack_to(self, writer):
    "Writes the current RobotHistoryRequest 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.RobotHistoryRequest = RobotHistoryRequest
del RobotHistoryRequest


class MessageGameToEngine(object):
  "Generated message-passing union."

  __slots__ = ('_tag', '_data')

  class Tag(object):
    "The type indicator for this union."
    UiDeviceConnectionWrongVersion     = 0x0  # Anki.Vector.ExternalInterface.UiDeviceConnectionWrongVersion
    MoveHead                           = 0x3  # Anki.Vector.ExternalInterface.MoveHead
    MoveLift                           = 0x4  # Anki.Vector.ExternalInterface.MoveLift
    DriveArc                           = 0x5  # Anki.Vector.ExternalInterface.DriveArc
    RobotHistoryRequest                = 0x6  # Anki.Vector.ExternalInterface.RobotHistoryRequest
    DisplayFaceImageRGBChunk           = 0x8  # Anki.Vector.ExternalInterface.DisplayFaceImageRGBChunk
    AppIntent                          = 0x9  # Anki.Vector.ExternalInterface.AppIntent
    CancelFaceEnrollment               = 0xa  # Anki.Vector.ExternalInterface.CancelFaceEnrollment
    RequestEnrolledNames               = 0xb  # Anki.Vector.ExternalInterface.RequestEnrolledNames
    UpdateEnrolledFaceByID             = 0xc  # Anki.Vector.ExternalInterface.UpdateEnrolledFaceByID
    EraseEnrolledFaceByID              = 0xd  # Anki.Vector.ExternalInterface.EraseEnrolledFaceByID
    EraseAllEnrolledFaces              = 0xe  # Anki.Vector.ExternalInterface.EraseAllEnrolledFaces
    SetFaceToEnroll                    = 0xf  # Anki.Vector.ExternalInterface.SetFaceToEnroll
    EnableVisionMode                   = 0x10 # Anki.Vector.ExternalInterface.EnableVisionMode
    RequestAvailableAnimations         = 0x11 # Anki.Vector.ExternalInterface.RequestAvailableAnimations
    GotoPose                           = 0x12 # Anki.Vector.ExternalInterface.GotoPose
    DriveStraight                      = 0x13 # Anki.Vector.ExternalInterface.DriveStraight
    TurnInPlace                        = 0x14 # Anki.Vector.ExternalInterface.TurnInPlace
    SetHeadAngle                       = 0x15 # Anki.Vector.ExternalInterface.SetHeadAngle
    SetLiftHeight                      = 0x16 # Anki.Vector.ExternalInterface.SetLiftHeight
    AlignWithObject                    = 0x18 # Anki.Vector.ExternalInterface.AlignWithObject
    SetLiftAngle                       = 0x19 # Anki.Vector.ExternalInterface.SetLiftAngle
    DeleteCustomMarkerObjects          = 0x1a # Anki.Vector.ExternalInterface.DeleteCustomMarkerObjects
    DeleteFixedCustomObjects           = 0x1b # Anki.Vector.ExternalInterface.DeleteFixedCustomObjects
    UndefineAllCustomMarkerObjects     = 0x1c # Anki.Vector.ExternalInterface.UndefineAllCustomMarkerObjects
    CreateFixedCustomObject            = 0x1d # Anki.Vector.ExternalInterface.CreateFixedCustomObject
    DefineCustomBox                    = 0x1e # Anki.Vector.ExternalInterface.DefineCustomBox
    DefineCustomCube                   = 0x1f # Anki.Vector.ExternalInterface.DefineCustomCube
    DefineCustomWall                   = 0x20 # Anki.Vector.ExternalInterface.DefineCustomWall
    SetMemoryMapBroadcastFrequency_sec = 0x21 # Anki.Vector.ExternalInterface.SetMemoryMapBroadcastFrequency_sec
    PostAudioEvent                     = 0x22 # Anki.AudioEngine.Multiplexer.PostAudioEvent
    StopAllAudioEvents                 = 0x23 # Anki.AudioEngine.Multiplexer.StopAllAudioEvents
    PostAudioGameState                 = 0x24 # Anki.AudioEngine.Multiplexer.PostAudioGameState
    PostAudioSwitchState               = 0x25 # Anki.AudioEngine.Multiplexer.PostAudioSwitchState
    PostAudioParameter                 = 0x26 # Anki.AudioEngine.Multiplexer.PostAudioParameter
    PostAudioMusicState                = 0x27 # Anki.AudioEngine.Multiplexer.PostAudioMusicState
    CalibrateMotors                    = 0x28 # Anki.Vector.ExternalInterface.CalibrateMotors
    CliffAlignToWhite                  = 0x29 # Anki.Vector.ExternalInterface.CliffAlignToWhite
    FlipBlock                          = 0x2a # Anki.Vector.ExternalInterface.FlipBlock
    GotoObject                         = 0x2b # Anki.Vector.ExternalInterface.GotoObject
    MountCharger                       = 0x2c # Anki.Vector.ExternalInterface.MountCharger
    PanAndTilt                         = 0x2d # Anki.Vector.ExternalInterface.PanAndTilt
    PickupObject                       = 0x2e # Anki.Vector.ExternalInterface.PickupObject
    PlaceObjectOnGround                = 0x2f # Anki.Vector.ExternalInterface.PlaceObjectOnGround
    PlaceObjectOnGroundHere            = 0x30 # Anki.Vector.ExternalInterface.PlaceObjectOnGroundHere
    PlaceOnObject                      = 0x31 # Anki.Vector.ExternalInterface.PlaceOnObject
    PlaceRelObject                     = 0x32 # Anki.Vector.ExternalInterface.PlaceRelObject
    PlayAnimation                      = 0x33 # Anki.Vector.ExternalInterface.PlayAnimation
    ListAnimations                     = 0x34 # Anki.Vector.ExternalInterface.ListAnimations
    PlayAnimationGroup                 = 0x35 # Anki.Vector.ExternalInterface.PlayAnimationGroup
    PlayAnimationTrigger               = 0x36 # Anki.Vector.ExternalInterface.PlayAnimationTrigger
    PopAWheelie                        = 0x37 # Anki.Vector.ExternalInterface.PopAWheelie
    FacePlant                          = 0x38 # Anki.Vector.ExternalInterface.FacePlant
    RealignWithObject                  = 0x39 # Anki.Vector.ExternalInterface.RealignWithObject
    RollObject                         = 0x3a # Anki.Vector.ExternalInterface.RollObject
    SayText                            = 0x3b # Anki.Vector.ExternalInterface.SayText
    SearchForNearbyObject              = 0x3c # Anki.Vector.ExternalInterface.SearchForNearbyObject
    TrackToFace                        = 0x3d # Anki.Vector.ExternalInterface.TrackToFace
    TrackToObject                      = 0x3e # Anki.Vector.ExternalInterface.TrackToObject
    TrackToLaserPoint                  = 0x3f # Anki.Vector.ExternalInterface.TrackToLaserPoint
    TrackToPet                         = 0x40 # Anki.Vector.ExternalInterface.TrackToPet
    TurnInPlaceAtSpeed                 = 0x41 # Anki.Vector.ExternalInterface.TurnInPlaceAtSpeed
    TurnTowardsFace                    = 0x42 # Anki.Vector.ExternalInterface.TurnTowardsFace
    TurnTowardsImagePoint              = 0x43 # Anki.Vector.ExternalInterface.TurnTowardsImagePoint
    TurnTowardsLastFacePose            = 0x44 # Anki.Vector.ExternalInterface.TurnTowardsLastFacePose
    TurnTowardsObject                  = 0x45 # Anki.Vector.ExternalInterface.TurnTowardsObject
    TurnTowardsPose                    = 0x46 # Anki.Vector.ExternalInterface.TurnTowardsPose
    VisuallyVerifyFace                 = 0x47 # Anki.Vector.ExternalInterface.VisuallyVerifyFace
    VisuallyVerifyObject               = 0x48 # Anki.Vector.ExternalInterface.VisuallyVerifyObject
    VisuallyVerifyNoObjectAtPose       = 0x49 # Anki.Vector.ExternalInterface.VisuallyVerifyNoObjectAtPose
    Wait                               = 0x4a # Anki.Vector.ExternalInterface.Wait
    WaitForImages                      = 0x4b # Anki.Vector.ExternalInterface.WaitForImages
    AdvertisementRegistrationMsg       = 0x4c # Anki.Vector.AdvertisementRegistrationMsg
    AdvertisementMsg                   = 0x4d # Anki.Vector.AdvertisementMsg
    Ping                               = 0x4e # Anki.Vector.ExternalInterface.Ping
    SetVizOrigin                       = 0x4f # Anki.Vector.SetVizOrigin
    ImageChunk                         = 0x50 # Anki.Vector.ImageChunk
    CameraCalibration                  = 0x51 # Anki.Vector.CameraCalibration
    IMURequest                         = 0x52 # Anki.Vector.IMURequest
    IMUTemperature                     = 0x53 # Anki.Vector.RobotInterface.IMUTemperature
    StartControllerTestMode            = 0x54 # Anki.Vector.StartControllerTestMode
    RawPWM                             = 0x55 # Anki.Vector.RawPWM
    SetConnectionStatus                = 0x56 # Anki.Vector.SwitchboardInterface.SetConnectionStatus
    SendBLEConnectionStatus            = 0x57 # Anki.Vector.SwitchboardInterface.SendBLEConnectionStatus
    SetBLEPin                          = 0x58 # Anki.Vector.SwitchboardInterface.SetBLEPin
    WifiScanResponse                   = 0x59 # Anki.Vector.SwitchboardInterface.WifiScanResponse
    WifiConnectResponse                = 0x5a # Anki.Vector.SwitchboardInterface.WifiConnectResponse
    HasBleKeysResponse                 = 0x5b # Anki.Vector.SwitchboardInterface.HasBleKeysResponse
    ActivateExperimentRequest          = 0x5c # Anki.Util.AnkiLab.ActivateExperimentRequest
    ActivateExperimentResponse         = 0x5d # Anki.Util.AnkiLab.ActivateExperimentResponse
    ConnectToUiDevice                  = 0x5e # Anki.Vector.ExternalInterface.ConnectToUiDevice
    DisconnectFromUiDevice             = 0x5f # Anki.Vector.ExternalInterface.DisconnectFromUiDevice
    UserLoggedIn                       = 0x60 # Anki.Vector.ExternalInterface.UserLoggedIn
    DriveWheels                        = 0x61 # Anki.Vector.ExternalInterface.DriveWheels
    EnableLiftPower                    = 0x62 # Anki.Vector.ExternalInterface.EnableLiftPower
    EnableCliffSensor                  = 0x63 # Anki.Vector.ExternalInterface.EnableCliffSensor
    EnableStopOnCliff                  = 0x64 # Anki.Vector.ExternalInterface.EnableStopOnCliff
    StopAllMotors                      = 0x65 # Anki.Vector.ExternalInterface.StopAllMotors
    ControllerGains                    = 0x66 # Anki.Vector.ExternalInterface.ControllerGains
    RollActionParams                   = 0x67 # Anki.Vector.ExternalInterface.RollActionParams
    SetMotionModelParams               = 0x68 # Anki.Vector.ExternalInterface.SetMotionModelParams
    SetRobotVolume                     = 0x69 # Anki.Vector.ExternalInterface.SetRobotVolume
    ForceDelocalizeRobot               = 0x6a # Anki.Vector.ExternalInterface.ForceDelocalizeRobot
    CancelAction                       = 0x6b # Anki.Vector.ExternalInterface.CancelAction
    CancelActionByIdTag                = 0x6c # Anki.Vector.ExternalInterface.CancelActionByIdTag
    QueueSingleAction                  = 0x6d # Anki.Vector.ExternalInterface.QueueSingleAction
    QueueCompoundAction                = 0x6e # Anki.Vector.ExternalInterface.QueueCompoundAction
    RedirectViz                        = 0x6f # Anki.Vector.ExternalInterface.RedirectViz
    ImageRequest                       = 0x70 # Anki.Vector.ExternalInterface.ImageRequest
    SaveImages                         = 0x71 # Anki.Vector.ExternalInterface.SaveImages
    EnableColorImages                  = 0x72 # Anki.Vector.ExternalInterface.EnableColorImages
    SaveRobotState                     = 0x73 # Anki.Vector.ExternalInterface.SaveRobotState
    EnableDisplay                      = 0x74 # Anki.Vector.ExternalInterface.EnableDisplay
    ExecuteTestPlan                    = 0x75 # Anki.Vector.ExternalInterface.ExecuteTestPlan
    SelectNextObject                   = 0x76 # Anki.Vector.ExternalInterface.SelectNextObject
    SetRobotCarryingObject             = 0x77 # Anki.Vector.ExternalInterface.SetRobotCarryingObject
    DeleteAllCustomObjects             = 0x78 # Anki.Vector.ExternalInterface.DeleteAllCustomObjects
    VisionWhileMoving                  = 0x79 # Anki.Vector.ExternalInterface.VisionWhileMoving
    VisionRunMode                      = 0x7a # Anki.Vector.ExternalInterface.VisionRunMode
    SaveFaceAlbumToFile                = 0x7b # Anki.Vector.ExternalInterface.SaveFaceAlbumToFile
    LoadFaceAlbumFromFile              = 0x7c # Anki.Vector.ExternalInterface.LoadFaceAlbumFromFile
    SetCameraCaptureFormat             = 0x7d # Anki.Vector.ExternalInterface.SetCameraCaptureFormat
    SetMemoryMapRenderEnabled          = 0x7e # Anki.Vector.ExternalInterface.SetMemoryMapRenderEnabled
    FakeTriggerWordDetected            = 0x7f # Anki.Vector.ExternalInterface.FakeTriggerWordDetected
    FakeCloudIntent                    = 0x80 # Anki.Vector.ExternalInterface.FakeCloudIntent
    FakeUserIntent                     = 0x81 # Anki.Vector.ExternalInterface.FakeUserIntent
    ExecuteBehaviorByID                = 0x82 # Anki.Vector.ExternalInterface.ExecuteBehaviorByID
    SetLiftLoadTestAsActivatable       = 0x83 # Anki.Vector.ExternalInterface.SetLiftLoadTestAsActivatable
    AbortPath                          = 0x84 # Anki.Vector.ExternalInterface.AbortPath
    AbortAll                           = 0x85 # Anki.Vector.ExternalInterface.AbortAll
    StartTestMode                      = 0x86 # Anki.Vector.ExternalInterface.StartTestMode
    DrawPoseMarker                     = 0x87 # Anki.Vector.ExternalInterface.DrawPoseMarker
    ErasePoseMarker                    = 0x88 # Anki.Vector.ExternalInterface.ErasePoseMarker
    VisualizeQuad                      = 0x89 # Anki.Vector.ExternalInterface.VisualizeQuad
    EraseQuad                          = 0x8a # Anki.Vector.ExternalInterface.EraseQuad
    ReadAnimationFile                  = 0x8b # Anki.Vector.ExternalInterface.ReadAnimationFile
    RequestAvailableAnimationGroups    = 0x8c # Anki.Vector.ExternalInterface.RequestAvailableAnimationGroups
    PushDrivingAnimations              = 0x8d # Anki.Vector.ExternalInterface.PushDrivingAnimations
    RemoveDrivingAnimations            = 0x8e # Anki.Vector.ExternalInterface.RemoveDrivingAnimations
    DisplayProceduralFace              = 0x8f # Anki.Vector.ExternalInterface.DisplayProceduralFace
    SetFaceHue                         = 0x90 # Anki.Vector.ExternalInterface.SetFaceHue
    DisplayFaceImageBinaryChunk        = 0x91 # Anki.Vector.ExternalInterface.DisplayFaceImageBinaryChunk
    SetActiveObjectLEDs                = 0x92 # Anki.Vector.ExternalInterface.SetActiveObjectLEDs
    SetAllActiveObjectLEDs             = 0x93 # Anki.Vector.ExternalInterface.SetAllActiveObjectLEDs
    SetBackpackLEDs                    = 0x94 # Anki.Vector.ExternalInterface.SetBackpackLEDs
    EnableLightStates                  = 0x95 # Anki.Vector.ExternalInterface.EnableLightStates
    PlayCubeAnim                       = 0x96 # Anki.Vector.ExternalInterface.PlayCubeAnim
    StopCubeAnim                       = 0x97 # Anki.Vector.ExternalInterface.StopCubeAnim
    SetOnboardingStage                 = 0x98 # Anki.Vector.ExternalInterface.SetOnboardingStage
    MoodMessage                        = 0x99 # Anki.Vector.ExternalInterface.MoodMessage
    SetDebugConsoleVarMessage          = 0x9a # Anki.Vector.ExternalInterface.SetDebugConsoleVarMessage
    SetAnimDebugConsoleVarMessage      = 0x9b # Anki.Vector.ExternalInterface.SetAnimDebugConsoleVarMessage
    RunDebugConsoleFuncMessage         = 0x9c # Anki.Vector.ExternalInterface.RunDebugConsoleFuncMessage
    RunAnimDebugConsoleFuncMessage     = 0x9d # Anki.Vector.ExternalInterface.RunAnimDebugConsoleFuncMessage
    GetDebugConsoleVarMessage          = 0x9e # Anki.Vector.ExternalInterface.GetDebugConsoleVarMessage
    GetAllDebugConsoleVarMessage       = 0x9f # Anki.Vector.ExternalInterface.GetAllDebugConsoleVarMessage
    GetJsonDasLogsMessage              = 0xa0 # Anki.Vector.ExternalInterface.GetJsonDasLogsMessage
    SetEnableSpeedChooser              = 0xa1 # Anki.Vector.ExternalInterface.SetEnableSpeedChooser
    LogRawCliffData                    = 0xa2 # Anki.Vector.ExternalInterface.LogRawCliffData
    LogRawProxData                     = 0xa3 # Anki.Vector.ExternalInterface.LogRawProxData
    ConnectToCube                      = 0xa4 # Anki.Vector.ExternalInterface.ConnectToCube
    DisconnectFromCube                 = 0xa5 # Anki.Vector.ExternalInterface.DisconnectFromCube
    ForgetPreferredCube                = 0xa6 # Anki.Vector.ExternalInterface.ForgetPreferredCube
    SetPreferredCube                   = 0xa7 # Anki.Vector.ExternalInterface.SetPreferredCube
    SendAvailableObjects               = 0xa8 # Anki.Vector.ExternalInterface.SendAvailableObjects
    SaveCalibrationImage               = 0xa9 # Anki.Vector.ExternalInterface.SaveCalibrationImage
    ClearCalibrationImages             = 0xaa # Anki.Vector.ExternalInterface.ClearCalibrationImages
    ComputeCameraCalibration           = 0xab # Anki.Vector.ExternalInterface.ComputeCameraCalibration
    TransferFile                       = 0xac # Anki.Vector.ExternalInterface.TransferFile
    SetCameraSettings                  = 0xad # Anki.Vector.ExternalInterface.SetCameraSettings
    RequestRobotSettings               = 0xae # Anki.Vector.ExternalInterface.RequestRobotSettings

  @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 UiDeviceConnectionWrongVersion(self):
    "Anki.Vector.ExternalInterface.UiDeviceConnectionWrongVersion UiDeviceConnectionWrongVersion union property."
    msgbuffers.safety_check_tag('UiDeviceConnectionWrongVersion', self._tag, self.Tag.UiDeviceConnectionWrongVersion, self._tags_by_value)
    return self._data

  @UiDeviceConnectionWrongVersion.setter
  def UiDeviceConnectionWrongVersion(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.UiDeviceConnectionWrongVersion', value, Anki.Vector.ExternalInterface.UiDeviceConnectionWrongVersion)
    self._tag = self.Tag.UiDeviceConnectionWrongVersion

  @property
  def MoveHead(self):
    "Anki.Vector.ExternalInterface.MoveHead MoveHead union property."
    msgbuffers.safety_check_tag('MoveHead', self._tag, self.Tag.MoveHead, self._tags_by_value)
    return self._data

  @MoveHead.setter
  def MoveHead(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.MoveHead', value, Anki.Vector.ExternalInterface.MoveHead)
    self._tag = self.Tag.MoveHead

  @property
  def MoveLift(self):
    "Anki.Vector.ExternalInterface.MoveLift MoveLift union property."
    msgbuffers.safety_check_tag('MoveLift', self._tag, self.Tag.MoveLift, self._tags_by_value)
    return self._data

  @MoveLift.setter
  def MoveLift(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.MoveLift', value, Anki.Vector.ExternalInterface.MoveLift)
    self._tag = self.Tag.MoveLift

  @property
  def DriveArc(self):
    "Anki.Vector.ExternalInterface.DriveArc DriveArc union property."
    msgbuffers.safety_check_tag('DriveArc', self._tag, self.Tag.DriveArc, self._tags_by_value)
    return self._data

  @DriveArc.setter
  def DriveArc(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.DriveArc', value, Anki.Vector.ExternalInterface.DriveArc)
    self._tag = self.Tag.DriveArc

  @property
  def RobotHistoryRequest(self):
    "Anki.Vector.ExternalInterface.RobotHistoryRequest RobotHistoryRequest union property."
    msgbuffers.safety_check_tag('RobotHistoryRequest', self._tag, self.Tag.RobotHistoryRequest, self._tags_by_value)
    return self._data

  @RobotHistoryRequest.setter
  def RobotHistoryRequest(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.RobotHistoryRequest', value, Anki.Vector.ExternalInterface.RobotHistoryRequest)
    self._tag = self.Tag.RobotHistoryRequest

  @property
  def DisplayFaceImageRGBChunk(self):
    "Anki.Vector.ExternalInterface.DisplayFaceImageRGBChunk DisplayFaceImageRGBChunk union property."
    msgbuffers.safety_check_tag('DisplayFaceImageRGBChunk', self._tag, self.Tag.DisplayFaceImageRGBChunk, self._tags_by_value)
    return self._data

  @DisplayFaceImageRGBChunk.setter
  def DisplayFaceImageRGBChunk(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.DisplayFaceImageRGBChunk', value, Anki.Vector.ExternalInterface.DisplayFaceImageRGBChunk)
    self._tag = self.Tag.DisplayFaceImageRGBChunk

  @property
  def AppIntent(self):
    "Anki.Vector.ExternalInterface.AppIntent AppIntent union property."
    msgbuffers.safety_check_tag('AppIntent', self._tag, self.Tag.AppIntent, self._tags_by_value)
    return self._data

  @AppIntent.setter
  def AppIntent(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.AppIntent', value, Anki.Vector.ExternalInterface.AppIntent)
    self._tag = self.Tag.AppIntent

  @property
  def CancelFaceEnrollment(self):
    "Anki.Vector.ExternalInterface.CancelFaceEnrollment CancelFaceEnrollment union property."
    msgbuffers.safety_check_tag('CancelFaceEnrollment', self._tag, self.Tag.CancelFaceEnrollment, self._tags_by_value)
    return self._data

  @CancelFaceEnrollment.setter
  def CancelFaceEnrollment(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.CancelFaceEnrollment', value, Anki.Vector.ExternalInterface.CancelFaceEnrollment)
    self._tag = self.Tag.CancelFaceEnrollment

  @property
  def RequestEnrolledNames(self):
    "Anki.Vector.ExternalInterface.RequestEnrolledNames RequestEnrolledNames union property."
    msgbuffers.safety_check_tag('RequestEnrolledNames', self._tag, self.Tag.RequestEnrolledNames, self._tags_by_value)
    return self._data

  @RequestEnrolledNames.setter
  def RequestEnrolledNames(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.RequestEnrolledNames', value, Anki.Vector.ExternalInterface.RequestEnrolledNames)
    self._tag = self.Tag.RequestEnrolledNames

  @property
  def UpdateEnrolledFaceByID(self):
    "Anki.Vector.ExternalInterface.UpdateEnrolledFaceByID UpdateEnrolledFaceByID union property."
    msgbuffers.safety_check_tag('UpdateEnrolledFaceByID', self._tag, self.Tag.UpdateEnrolledFaceByID, self._tags_by_value)
    return self._data

  @UpdateEnrolledFaceByID.setter
  def UpdateEnrolledFaceByID(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.UpdateEnrolledFaceByID', value, Anki.Vector.ExternalInterface.UpdateEnrolledFaceByID)
    self._tag = self.Tag.UpdateEnrolledFaceByID

  @property
  def EraseEnrolledFaceByID(self):
    "Anki.Vector.ExternalInterface.EraseEnrolledFaceByID EraseEnrolledFaceByID union property."
    msgbuffers.safety_check_tag('EraseEnrolledFaceByID', self._tag, self.Tag.EraseEnrolledFaceByID, self._tags_by_value)
    return self._data

  @EraseEnrolledFaceByID.setter
  def EraseEnrolledFaceByID(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.EraseEnrolledFaceByID', value, Anki.Vector.ExternalInterface.EraseEnrolledFaceByID)
    self._tag = self.Tag.EraseEnrolledFaceByID

  @property
  def EraseAllEnrolledFaces(self):
    "Anki.Vector.ExternalInterface.EraseAllEnrolledFaces EraseAllEnrolledFaces union property."
    msgbuffers.safety_check_tag('EraseAllEnrolledFaces', self._tag, self.Tag.EraseAllEnrolledFaces, self._tags_by_value)
    return self._data

  @EraseAllEnrolledFaces.setter
  def EraseAllEnrolledFaces(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.EraseAllEnrolledFaces', value, Anki.Vector.ExternalInterface.EraseAllEnrolledFaces)
    self._tag = self.Tag.EraseAllEnrolledFaces

  @property
  def SetFaceToEnroll(self):
    "Anki.Vector.ExternalInterface.SetFaceToEnroll SetFaceToEnroll union property."
    msgbuffers.safety_check_tag('SetFaceToEnroll', self._tag, self.Tag.SetFaceToEnroll, self._tags_by_value)
    return self._data

  @SetFaceToEnroll.setter
  def SetFaceToEnroll(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetFaceToEnroll', value, Anki.Vector.ExternalInterface.SetFaceToEnroll)
    self._tag = self.Tag.SetFaceToEnroll

  @property
  def EnableVisionMode(self):
    "Anki.Vector.ExternalInterface.EnableVisionMode EnableVisionMode union property."
    msgbuffers.safety_check_tag('EnableVisionMode', self._tag, self.Tag.EnableVisionMode, self._tags_by_value)
    return self._data

  @EnableVisionMode.setter
  def EnableVisionMode(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.EnableVisionMode', value, Anki.Vector.ExternalInterface.EnableVisionMode)
    self._tag = self.Tag.EnableVisionMode

  @property
  def RequestAvailableAnimations(self):
    "Anki.Vector.ExternalInterface.RequestAvailableAnimations RequestAvailableAnimations union property."
    msgbuffers.safety_check_tag('RequestAvailableAnimations', self._tag, self.Tag.RequestAvailableAnimations, self._tags_by_value)
    return self._data

  @RequestAvailableAnimations.setter
  def RequestAvailableAnimations(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.RequestAvailableAnimations', value, Anki.Vector.ExternalInterface.RequestAvailableAnimations)
    self._tag = self.Tag.RequestAvailableAnimations

  @property
  def GotoPose(self):
    "Anki.Vector.ExternalInterface.GotoPose GotoPose union property."
    msgbuffers.safety_check_tag('GotoPose', self._tag, self.Tag.GotoPose, self._tags_by_value)
    return self._data

  @GotoPose.setter
  def GotoPose(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.GotoPose', value, Anki.Vector.ExternalInterface.GotoPose)
    self._tag = self.Tag.GotoPose

  @property
  def DriveStraight(self):
    "Anki.Vector.ExternalInterface.DriveStraight DriveStraight union property."
    msgbuffers.safety_check_tag('DriveStraight', self._tag, self.Tag.DriveStraight, self._tags_by_value)
    return self._data

  @DriveStraight.setter
  def DriveStraight(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.DriveStraight', value, Anki.Vector.ExternalInterface.DriveStraight)
    self._tag = self.Tag.DriveStraight

  @property
  def TurnInPlace(self):
    "Anki.Vector.ExternalInterface.TurnInPlace TurnInPlace union property."
    msgbuffers.safety_check_tag('TurnInPlace', self._tag, self.Tag.TurnInPlace, self._tags_by_value)
    return self._data

  @TurnInPlace.setter
  def TurnInPlace(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.TurnInPlace', value, Anki.Vector.ExternalInterface.TurnInPlace)
    self._tag = self.Tag.TurnInPlace

  @property
  def SetHeadAngle(self):
    "Anki.Vector.ExternalInterface.SetHeadAngle SetHeadAngle union property."
    msgbuffers.safety_check_tag('SetHeadAngle', self._tag, self.Tag.SetHeadAngle, self._tags_by_value)
    return self._data

  @SetHeadAngle.setter
  def SetHeadAngle(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetHeadAngle', value, Anki.Vector.ExternalInterface.SetHeadAngle)
    self._tag = self.Tag.SetHeadAngle

  @property
  def SetLiftHeight(self):
    "Anki.Vector.ExternalInterface.SetLiftHeight SetLiftHeight union property."
    msgbuffers.safety_check_tag('SetLiftHeight', self._tag, self.Tag.SetLiftHeight, self._tags_by_value)
    return self._data

  @SetLiftHeight.setter
  def SetLiftHeight(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetLiftHeight', value, Anki.Vector.ExternalInterface.SetLiftHeight)
    self._tag = self.Tag.SetLiftHeight

  @property
  def AlignWithObject(self):
    "Anki.Vector.ExternalInterface.AlignWithObject AlignWithObject union property."
    msgbuffers.safety_check_tag('AlignWithObject', self._tag, self.Tag.AlignWithObject, self._tags_by_value)
    return self._data

  @AlignWithObject.setter
  def AlignWithObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.AlignWithObject', value, Anki.Vector.ExternalInterface.AlignWithObject)
    self._tag = self.Tag.AlignWithObject

  @property
  def SetLiftAngle(self):
    "Anki.Vector.ExternalInterface.SetLiftAngle SetLiftAngle union property."
    msgbuffers.safety_check_tag('SetLiftAngle', self._tag, self.Tag.SetLiftAngle, self._tags_by_value)
    return self._data

  @SetLiftAngle.setter
  def SetLiftAngle(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetLiftAngle', value, Anki.Vector.ExternalInterface.SetLiftAngle)
    self._tag = self.Tag.SetLiftAngle

  @property
  def DeleteCustomMarkerObjects(self):
    "Anki.Vector.ExternalInterface.DeleteCustomMarkerObjects DeleteCustomMarkerObjects union property."
    msgbuffers.safety_check_tag('DeleteCustomMarkerObjects', self._tag, self.Tag.DeleteCustomMarkerObjects, self._tags_by_value)
    return self._data

  @DeleteCustomMarkerObjects.setter
  def DeleteCustomMarkerObjects(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.DeleteCustomMarkerObjects', value, Anki.Vector.ExternalInterface.DeleteCustomMarkerObjects)
    self._tag = self.Tag.DeleteCustomMarkerObjects

  @property
  def DeleteFixedCustomObjects(self):
    "Anki.Vector.ExternalInterface.DeleteFixedCustomObjects DeleteFixedCustomObjects union property."
    msgbuffers.safety_check_tag('DeleteFixedCustomObjects', self._tag, self.Tag.DeleteFixedCustomObjects, self._tags_by_value)
    return self._data

  @DeleteFixedCustomObjects.setter
  def DeleteFixedCustomObjects(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.DeleteFixedCustomObjects', value, Anki.Vector.ExternalInterface.DeleteFixedCustomObjects)
    self._tag = self.Tag.DeleteFixedCustomObjects

  @property
  def UndefineAllCustomMarkerObjects(self):
    "Anki.Vector.ExternalInterface.UndefineAllCustomMarkerObjects UndefineAllCustomMarkerObjects union property."
    msgbuffers.safety_check_tag('UndefineAllCustomMarkerObjects', self._tag, self.Tag.UndefineAllCustomMarkerObjects, self._tags_by_value)
    return self._data

  @UndefineAllCustomMarkerObjects.setter
  def UndefineAllCustomMarkerObjects(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.UndefineAllCustomMarkerObjects', value, Anki.Vector.ExternalInterface.UndefineAllCustomMarkerObjects)
    self._tag = self.Tag.UndefineAllCustomMarkerObjects

  @property
  def CreateFixedCustomObject(self):
    "Anki.Vector.ExternalInterface.CreateFixedCustomObject CreateFixedCustomObject union property."
    msgbuffers.safety_check_tag('CreateFixedCustomObject', self._tag, self.Tag.CreateFixedCustomObject, self._tags_by_value)
    return self._data

  @CreateFixedCustomObject.setter
  def CreateFixedCustomObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.CreateFixedCustomObject', value, Anki.Vector.ExternalInterface.CreateFixedCustomObject)
    self._tag = self.Tag.CreateFixedCustomObject

  @property
  def DefineCustomBox(self):
    "Anki.Vector.ExternalInterface.DefineCustomBox DefineCustomBox union property."
    msgbuffers.safety_check_tag('DefineCustomBox', self._tag, self.Tag.DefineCustomBox, self._tags_by_value)
    return self._data

  @DefineCustomBox.setter
  def DefineCustomBox(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.DefineCustomBox', value, Anki.Vector.ExternalInterface.DefineCustomBox)
    self._tag = self.Tag.DefineCustomBox

  @property
  def DefineCustomCube(self):
    "Anki.Vector.ExternalInterface.DefineCustomCube DefineCustomCube union property."
    msgbuffers.safety_check_tag('DefineCustomCube', self._tag, self.Tag.DefineCustomCube, self._tags_by_value)
    return self._data

  @DefineCustomCube.setter
  def DefineCustomCube(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.DefineCustomCube', value, Anki.Vector.ExternalInterface.DefineCustomCube)
    self._tag = self.Tag.DefineCustomCube

  @property
  def DefineCustomWall(self):
    "Anki.Vector.ExternalInterface.DefineCustomWall DefineCustomWall union property."
    msgbuffers.safety_check_tag('DefineCustomWall', self._tag, self.Tag.DefineCustomWall, self._tags_by_value)
    return self._data

  @DefineCustomWall.setter
  def DefineCustomWall(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.DefineCustomWall', value, Anki.Vector.ExternalInterface.DefineCustomWall)
    self._tag = self.Tag.DefineCustomWall

  @property
  def SetMemoryMapBroadcastFrequency_sec(self):
    "Anki.Vector.ExternalInterface.SetMemoryMapBroadcastFrequency_sec SetMemoryMapBroadcastFrequency_sec union property."
    msgbuffers.safety_check_tag('SetMemoryMapBroadcastFrequency_sec', self._tag, self.Tag.SetMemoryMapBroadcastFrequency_sec, self._tags_by_value)
    return self._data

  @SetMemoryMapBroadcastFrequency_sec.setter
  def SetMemoryMapBroadcastFrequency_sec(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetMemoryMapBroadcastFrequency_sec', value, Anki.Vector.ExternalInterface.SetMemoryMapBroadcastFrequency_sec)
    self._tag = self.Tag.SetMemoryMapBroadcastFrequency_sec

  @property
  def PostAudioEvent(self):
    "Anki.AudioEngine.Multiplexer.PostAudioEvent PostAudioEvent union property."
    msgbuffers.safety_check_tag('PostAudioEvent', self._tag, self.Tag.PostAudioEvent, self._tags_by_value)
    return self._data

  @PostAudioEvent.setter
  def PostAudioEvent(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.PostAudioEvent', value, Anki.AudioEngine.Multiplexer.PostAudioEvent)
    self._tag = self.Tag.PostAudioEvent

  @property
  def StopAllAudioEvents(self):
    "Anki.AudioEngine.Multiplexer.StopAllAudioEvents StopAllAudioEvents union property."
    msgbuffers.safety_check_tag('StopAllAudioEvents', self._tag, self.Tag.StopAllAudioEvents, self._tags_by_value)
    return self._data

  @StopAllAudioEvents.setter
  def StopAllAudioEvents(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.StopAllAudioEvents', value, Anki.AudioEngine.Multiplexer.StopAllAudioEvents)
    self._tag = self.Tag.StopAllAudioEvents

  @property
  def PostAudioGameState(self):
    "Anki.AudioEngine.Multiplexer.PostAudioGameState PostAudioGameState union property."
    msgbuffers.safety_check_tag('PostAudioGameState', self._tag, self.Tag.PostAudioGameState, self._tags_by_value)
    return self._data

  @PostAudioGameState.setter
  def PostAudioGameState(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.PostAudioGameState', value, Anki.AudioEngine.Multiplexer.PostAudioGameState)
    self._tag = self.Tag.PostAudioGameState

  @property
  def PostAudioSwitchState(self):
    "Anki.AudioEngine.Multiplexer.PostAudioSwitchState PostAudioSwitchState union property."
    msgbuffers.safety_check_tag('PostAudioSwitchState', self._tag, self.Tag.PostAudioSwitchState, self._tags_by_value)
    return self._data

  @PostAudioSwitchState.setter
  def PostAudioSwitchState(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.PostAudioSwitchState', value, Anki.AudioEngine.Multiplexer.PostAudioSwitchState)
    self._tag = self.Tag.PostAudioSwitchState

  @property
  def PostAudioParameter(self):
    "Anki.AudioEngine.Multiplexer.PostAudioParameter PostAudioParameter union property."
    msgbuffers.safety_check_tag('PostAudioParameter', self._tag, self.Tag.PostAudioParameter, self._tags_by_value)
    return self._data

  @PostAudioParameter.setter
  def PostAudioParameter(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.PostAudioParameter', value, Anki.AudioEngine.Multiplexer.PostAudioParameter)
    self._tag = self.Tag.PostAudioParameter

  @property
  def PostAudioMusicState(self):
    "Anki.AudioEngine.Multiplexer.PostAudioMusicState PostAudioMusicState union property."
    msgbuffers.safety_check_tag('PostAudioMusicState', self._tag, self.Tag.PostAudioMusicState, self._tags_by_value)
    return self._data

  @PostAudioMusicState.setter
  def PostAudioMusicState(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.PostAudioMusicState', value, Anki.AudioEngine.Multiplexer.PostAudioMusicState)
    self._tag = self.Tag.PostAudioMusicState

  @property
  def CalibrateMotors(self):
    "Anki.Vector.ExternalInterface.CalibrateMotors CalibrateMotors union property."
    msgbuffers.safety_check_tag('CalibrateMotors', self._tag, self.Tag.CalibrateMotors, self._tags_by_value)
    return self._data

  @CalibrateMotors.setter
  def CalibrateMotors(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.CalibrateMotors', value, Anki.Vector.ExternalInterface.CalibrateMotors)
    self._tag = self.Tag.CalibrateMotors

  @property
  def CliffAlignToWhite(self):
    "Anki.Vector.ExternalInterface.CliffAlignToWhite CliffAlignToWhite union property."
    msgbuffers.safety_check_tag('CliffAlignToWhite', self._tag, self.Tag.CliffAlignToWhite, self._tags_by_value)
    return self._data

  @CliffAlignToWhite.setter
  def CliffAlignToWhite(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.CliffAlignToWhite', value, Anki.Vector.ExternalInterface.CliffAlignToWhite)
    self._tag = self.Tag.CliffAlignToWhite

  @property
  def FlipBlock(self):
    "Anki.Vector.ExternalInterface.FlipBlock FlipBlock union property."
    msgbuffers.safety_check_tag('FlipBlock', self._tag, self.Tag.FlipBlock, self._tags_by_value)
    return self._data

  @FlipBlock.setter
  def FlipBlock(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.FlipBlock', value, Anki.Vector.ExternalInterface.FlipBlock)
    self._tag = self.Tag.FlipBlock

  @property
  def GotoObject(self):
    "Anki.Vector.ExternalInterface.GotoObject GotoObject union property."
    msgbuffers.safety_check_tag('GotoObject', self._tag, self.Tag.GotoObject, self._tags_by_value)
    return self._data

  @GotoObject.setter
  def GotoObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.GotoObject', value, Anki.Vector.ExternalInterface.GotoObject)
    self._tag = self.Tag.GotoObject

  @property
  def MountCharger(self):
    "Anki.Vector.ExternalInterface.MountCharger MountCharger union property."
    msgbuffers.safety_check_tag('MountCharger', self._tag, self.Tag.MountCharger, self._tags_by_value)
    return self._data

  @MountCharger.setter
  def MountCharger(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.MountCharger', value, Anki.Vector.ExternalInterface.MountCharger)
    self._tag = self.Tag.MountCharger

  @property
  def PanAndTilt(self):
    "Anki.Vector.ExternalInterface.PanAndTilt PanAndTilt union property."
    msgbuffers.safety_check_tag('PanAndTilt', self._tag, self.Tag.PanAndTilt, self._tags_by_value)
    return self._data

  @PanAndTilt.setter
  def PanAndTilt(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.PanAndTilt', value, Anki.Vector.ExternalInterface.PanAndTilt)
    self._tag = self.Tag.PanAndTilt

  @property
  def PickupObject(self):
    "Anki.Vector.ExternalInterface.PickupObject PickupObject union property."
    msgbuffers.safety_check_tag('PickupObject', self._tag, self.Tag.PickupObject, self._tags_by_value)
    return self._data

  @PickupObject.setter
  def PickupObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.PickupObject', value, Anki.Vector.ExternalInterface.PickupObject)
    self._tag = self.Tag.PickupObject

  @property
  def PlaceObjectOnGround(self):
    "Anki.Vector.ExternalInterface.PlaceObjectOnGround PlaceObjectOnGround union property."
    msgbuffers.safety_check_tag('PlaceObjectOnGround', self._tag, self.Tag.PlaceObjectOnGround, self._tags_by_value)
    return self._data

  @PlaceObjectOnGround.setter
  def PlaceObjectOnGround(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.PlaceObjectOnGround', value, Anki.Vector.ExternalInterface.PlaceObjectOnGround)
    self._tag = self.Tag.PlaceObjectOnGround

  @property
  def PlaceObjectOnGroundHere(self):
    "Anki.Vector.ExternalInterface.PlaceObjectOnGroundHere PlaceObjectOnGroundHere union property."
    msgbuffers.safety_check_tag('PlaceObjectOnGroundHere', self._tag, self.Tag.PlaceObjectOnGroundHere, self._tags_by_value)
    return self._data

  @PlaceObjectOnGroundHere.setter
  def PlaceObjectOnGroundHere(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.PlaceObjectOnGroundHere', value, Anki.Vector.ExternalInterface.PlaceObjectOnGroundHere)
    self._tag = self.Tag.PlaceObjectOnGroundHere

  @property
  def PlaceOnObject(self):
    "Anki.Vector.ExternalInterface.PlaceOnObject PlaceOnObject union property."
    msgbuffers.safety_check_tag('PlaceOnObject', self._tag, self.Tag.PlaceOnObject, self._tags_by_value)
    return self._data

  @PlaceOnObject.setter
  def PlaceOnObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.PlaceOnObject', value, Anki.Vector.ExternalInterface.PlaceOnObject)
    self._tag = self.Tag.PlaceOnObject

  @property
  def PlaceRelObject(self):
    "Anki.Vector.ExternalInterface.PlaceRelObject PlaceRelObject union property."
    msgbuffers.safety_check_tag('PlaceRelObject', self._tag, self.Tag.PlaceRelObject, self._tags_by_value)
    return self._data

  @PlaceRelObject.setter
  def PlaceRelObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.PlaceRelObject', value, Anki.Vector.ExternalInterface.PlaceRelObject)
    self._tag = self.Tag.PlaceRelObject

  @property
  def PlayAnimation(self):
    "Anki.Vector.ExternalInterface.PlayAnimation PlayAnimation union property."
    msgbuffers.safety_check_tag('PlayAnimation', self._tag, self.Tag.PlayAnimation, self._tags_by_value)
    return self._data

  @PlayAnimation.setter
  def PlayAnimation(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.PlayAnimation', value, Anki.Vector.ExternalInterface.PlayAnimation)
    self._tag = self.Tag.PlayAnimation

  @property
  def ListAnimations(self):
    "Anki.Vector.ExternalInterface.ListAnimations ListAnimations union property."
    msgbuffers.safety_check_tag('ListAnimations', self._tag, self.Tag.ListAnimations, self._tags_by_value)
    return self._data

  @ListAnimations.setter
  def ListAnimations(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.ListAnimations', value, Anki.Vector.ExternalInterface.ListAnimations)
    self._tag = self.Tag.ListAnimations

  @property
  def PlayAnimationGroup(self):
    "Anki.Vector.ExternalInterface.PlayAnimationGroup PlayAnimationGroup union property."
    msgbuffers.safety_check_tag('PlayAnimationGroup', self._tag, self.Tag.PlayAnimationGroup, self._tags_by_value)
    return self._data

  @PlayAnimationGroup.setter
  def PlayAnimationGroup(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.PlayAnimationGroup', value, Anki.Vector.ExternalInterface.PlayAnimationGroup)
    self._tag = self.Tag.PlayAnimationGroup

  @property
  def PlayAnimationTrigger(self):
    "Anki.Vector.ExternalInterface.PlayAnimationTrigger PlayAnimationTrigger union property."
    msgbuffers.safety_check_tag('PlayAnimationTrigger', self._tag, self.Tag.PlayAnimationTrigger, self._tags_by_value)
    return self._data

  @PlayAnimationTrigger.setter
  def PlayAnimationTrigger(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.PlayAnimationTrigger', value, Anki.Vector.ExternalInterface.PlayAnimationTrigger)
    self._tag = self.Tag.PlayAnimationTrigger

  @property
  def PopAWheelie(self):
    "Anki.Vector.ExternalInterface.PopAWheelie PopAWheelie union property."
    msgbuffers.safety_check_tag('PopAWheelie', self._tag, self.Tag.PopAWheelie, self._tags_by_value)
    return self._data

  @PopAWheelie.setter
  def PopAWheelie(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.PopAWheelie', value, Anki.Vector.ExternalInterface.PopAWheelie)
    self._tag = self.Tag.PopAWheelie

  @property
  def FacePlant(self):
    "Anki.Vector.ExternalInterface.FacePlant FacePlant union property."
    msgbuffers.safety_check_tag('FacePlant', self._tag, self.Tag.FacePlant, self._tags_by_value)
    return self._data

  @FacePlant.setter
  def FacePlant(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.FacePlant', value, Anki.Vector.ExternalInterface.FacePlant)
    self._tag = self.Tag.FacePlant

  @property
  def RealignWithObject(self):
    "Anki.Vector.ExternalInterface.RealignWithObject RealignWithObject union property."
    msgbuffers.safety_check_tag('RealignWithObject', self._tag, self.Tag.RealignWithObject, self._tags_by_value)
    return self._data

  @RealignWithObject.setter
  def RealignWithObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.RealignWithObject', value, Anki.Vector.ExternalInterface.RealignWithObject)
    self._tag = self.Tag.RealignWithObject

  @property
  def RollObject(self):
    "Anki.Vector.ExternalInterface.RollObject RollObject union property."
    msgbuffers.safety_check_tag('RollObject', self._tag, self.Tag.RollObject, self._tags_by_value)
    return self._data

  @RollObject.setter
  def RollObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.RollObject', value, Anki.Vector.ExternalInterface.RollObject)
    self._tag = self.Tag.RollObject

  @property
  def SayText(self):
    "Anki.Vector.ExternalInterface.SayText SayText union property."
    msgbuffers.safety_check_tag('SayText', self._tag, self.Tag.SayText, self._tags_by_value)
    return self._data

  @SayText.setter
  def SayText(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SayText', value, Anki.Vector.ExternalInterface.SayText)
    self._tag = self.Tag.SayText

  @property
  def SearchForNearbyObject(self):
    "Anki.Vector.ExternalInterface.SearchForNearbyObject SearchForNearbyObject union property."
    msgbuffers.safety_check_tag('SearchForNearbyObject', self._tag, self.Tag.SearchForNearbyObject, self._tags_by_value)
    return self._data

  @SearchForNearbyObject.setter
  def SearchForNearbyObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SearchForNearbyObject', value, Anki.Vector.ExternalInterface.SearchForNearbyObject)
    self._tag = self.Tag.SearchForNearbyObject

  @property
  def TrackToFace(self):
    "Anki.Vector.ExternalInterface.TrackToFace TrackToFace union property."
    msgbuffers.safety_check_tag('TrackToFace', self._tag, self.Tag.TrackToFace, self._tags_by_value)
    return self._data

  @TrackToFace.setter
  def TrackToFace(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.TrackToFace', value, Anki.Vector.ExternalInterface.TrackToFace)
    self._tag = self.Tag.TrackToFace

  @property
  def TrackToObject(self):
    "Anki.Vector.ExternalInterface.TrackToObject TrackToObject union property."
    msgbuffers.safety_check_tag('TrackToObject', self._tag, self.Tag.TrackToObject, self._tags_by_value)
    return self._data

  @TrackToObject.setter
  def TrackToObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.TrackToObject', value, Anki.Vector.ExternalInterface.TrackToObject)
    self._tag = self.Tag.TrackToObject

  @property
  def TrackToLaserPoint(self):
    "Anki.Vector.ExternalInterface.TrackToLaserPoint TrackToLaserPoint union property."
    msgbuffers.safety_check_tag('TrackToLaserPoint', self._tag, self.Tag.TrackToLaserPoint, self._tags_by_value)
    return self._data

  @TrackToLaserPoint.setter
  def TrackToLaserPoint(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.TrackToLaserPoint', value, Anki.Vector.ExternalInterface.TrackToLaserPoint)
    self._tag = self.Tag.TrackToLaserPoint

  @property
  def TrackToPet(self):
    "Anki.Vector.ExternalInterface.TrackToPet TrackToPet union property."
    msgbuffers.safety_check_tag('TrackToPet', self._tag, self.Tag.TrackToPet, self._tags_by_value)
    return self._data

  @TrackToPet.setter
  def TrackToPet(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.TrackToPet', value, Anki.Vector.ExternalInterface.TrackToPet)
    self._tag = self.Tag.TrackToPet

  @property
  def TurnInPlaceAtSpeed(self):
    "Anki.Vector.ExternalInterface.TurnInPlaceAtSpeed TurnInPlaceAtSpeed union property."
    msgbuffers.safety_check_tag('TurnInPlaceAtSpeed', self._tag, self.Tag.TurnInPlaceAtSpeed, self._tags_by_value)
    return self._data

  @TurnInPlaceAtSpeed.setter
  def TurnInPlaceAtSpeed(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.TurnInPlaceAtSpeed', value, Anki.Vector.ExternalInterface.TurnInPlaceAtSpeed)
    self._tag = self.Tag.TurnInPlaceAtSpeed

  @property
  def TurnTowardsFace(self):
    "Anki.Vector.ExternalInterface.TurnTowardsFace TurnTowardsFace union property."
    msgbuffers.safety_check_tag('TurnTowardsFace', self._tag, self.Tag.TurnTowardsFace, self._tags_by_value)
    return self._data

  @TurnTowardsFace.setter
  def TurnTowardsFace(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.TurnTowardsFace', value, Anki.Vector.ExternalInterface.TurnTowardsFace)
    self._tag = self.Tag.TurnTowardsFace

  @property
  def TurnTowardsImagePoint(self):
    "Anki.Vector.ExternalInterface.TurnTowardsImagePoint TurnTowardsImagePoint union property."
    msgbuffers.safety_check_tag('TurnTowardsImagePoint', self._tag, self.Tag.TurnTowardsImagePoint, self._tags_by_value)
    return self._data

  @TurnTowardsImagePoint.setter
  def TurnTowardsImagePoint(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.TurnTowardsImagePoint', value, Anki.Vector.ExternalInterface.TurnTowardsImagePoint)
    self._tag = self.Tag.TurnTowardsImagePoint

  @property
  def TurnTowardsLastFacePose(self):
    "Anki.Vector.ExternalInterface.TurnTowardsLastFacePose TurnTowardsLastFacePose union property."
    msgbuffers.safety_check_tag('TurnTowardsLastFacePose', self._tag, self.Tag.TurnTowardsLastFacePose, self._tags_by_value)
    return self._data

  @TurnTowardsLastFacePose.setter
  def TurnTowardsLastFacePose(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.TurnTowardsLastFacePose', value, Anki.Vector.ExternalInterface.TurnTowardsLastFacePose)
    self._tag = self.Tag.TurnTowardsLastFacePose

  @property
  def TurnTowardsObject(self):
    "Anki.Vector.ExternalInterface.TurnTowardsObject TurnTowardsObject union property."
    msgbuffers.safety_check_tag('TurnTowardsObject', self._tag, self.Tag.TurnTowardsObject, self._tags_by_value)
    return self._data

  @TurnTowardsObject.setter
  def TurnTowardsObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.TurnTowardsObject', value, Anki.Vector.ExternalInterface.TurnTowardsObject)
    self._tag = self.Tag.TurnTowardsObject

  @property
  def TurnTowardsPose(self):
    "Anki.Vector.ExternalInterface.TurnTowardsPose TurnTowardsPose union property."
    msgbuffers.safety_check_tag('TurnTowardsPose', self._tag, self.Tag.TurnTowardsPose, self._tags_by_value)
    return self._data

  @TurnTowardsPose.setter
  def TurnTowardsPose(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.TurnTowardsPose', value, Anki.Vector.ExternalInterface.TurnTowardsPose)
    self._tag = self.Tag.TurnTowardsPose

  @property
  def VisuallyVerifyFace(self):
    "Anki.Vector.ExternalInterface.VisuallyVerifyFace VisuallyVerifyFace union property."
    msgbuffers.safety_check_tag('VisuallyVerifyFace', self._tag, self.Tag.VisuallyVerifyFace, self._tags_by_value)
    return self._data

  @VisuallyVerifyFace.setter
  def VisuallyVerifyFace(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.VisuallyVerifyFace', value, Anki.Vector.ExternalInterface.VisuallyVerifyFace)
    self._tag = self.Tag.VisuallyVerifyFace

  @property
  def VisuallyVerifyObject(self):
    "Anki.Vector.ExternalInterface.VisuallyVerifyObject VisuallyVerifyObject union property."
    msgbuffers.safety_check_tag('VisuallyVerifyObject', self._tag, self.Tag.VisuallyVerifyObject, self._tags_by_value)
    return self._data

  @VisuallyVerifyObject.setter
  def VisuallyVerifyObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.VisuallyVerifyObject', value, Anki.Vector.ExternalInterface.VisuallyVerifyObject)
    self._tag = self.Tag.VisuallyVerifyObject

  @property
  def VisuallyVerifyNoObjectAtPose(self):
    "Anki.Vector.ExternalInterface.VisuallyVerifyNoObjectAtPose VisuallyVerifyNoObjectAtPose union property."
    msgbuffers.safety_check_tag('VisuallyVerifyNoObjectAtPose', self._tag, self.Tag.VisuallyVerifyNoObjectAtPose, self._tags_by_value)
    return self._data

  @VisuallyVerifyNoObjectAtPose.setter
  def VisuallyVerifyNoObjectAtPose(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.VisuallyVerifyNoObjectAtPose', value, Anki.Vector.ExternalInterface.VisuallyVerifyNoObjectAtPose)
    self._tag = self.Tag.VisuallyVerifyNoObjectAtPose

  @property
  def Wait(self):
    "Anki.Vector.ExternalInterface.Wait Wait union property."
    msgbuffers.safety_check_tag('Wait', self._tag, self.Tag.Wait, self._tags_by_value)
    return self._data

  @Wait.setter
  def Wait(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.Wait', value, Anki.Vector.ExternalInterface.Wait)
    self._tag = self.Tag.Wait

  @property
  def WaitForImages(self):
    "Anki.Vector.ExternalInterface.WaitForImages WaitForImages union property."
    msgbuffers.safety_check_tag('WaitForImages', self._tag, self.Tag.WaitForImages, self._tags_by_value)
    return self._data

  @WaitForImages.setter
  def WaitForImages(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.WaitForImages', value, Anki.Vector.ExternalInterface.WaitForImages)
    self._tag = self.Tag.WaitForImages

  @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(
      'MessageGameToEngine.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(
      'MessageGameToEngine.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(
      'MessageGameToEngine.Ping', value, Anki.Vector.ExternalInterface.Ping)
    self._tag = self.Tag.Ping

  @property
  def SetVizOrigin(self):
    "Anki.Vector.SetVizOrigin SetVizOrigin union property."
    msgbuffers.safety_check_tag('SetVizOrigin', self._tag, self.Tag.SetVizOrigin, self._tags_by_value)
    return self._data

  @SetVizOrigin.setter
  def SetVizOrigin(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetVizOrigin', value, Anki.Vector.SetVizOrigin)
    self._tag = self.Tag.SetVizOrigin

  @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(
      'MessageGameToEngine.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(
      'MessageGameToEngine.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(
      'MessageGameToEngine.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(
      'MessageGameToEngine.IMUTemperature', value, Anki.Vector.RobotInterface.IMUTemperature)
    self._tag = self.Tag.IMUTemperature

  @property
  def StartControllerTestMode(self):
    "Anki.Vector.StartControllerTestMode StartControllerTestMode union property."
    msgbuffers.safety_check_tag('StartControllerTestMode', self._tag, self.Tag.StartControllerTestMode, self._tags_by_value)
    return self._data

  @StartControllerTestMode.setter
  def StartControllerTestMode(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.StartControllerTestMode', value, Anki.Vector.StartControllerTestMode)
    self._tag = self.Tag.StartControllerTestMode

  @property
  def RawPWM(self):
    "Anki.Vector.RawPWM RawPWM union property."
    msgbuffers.safety_check_tag('RawPWM', self._tag, self.Tag.RawPWM, self._tags_by_value)
    return self._data

  @RawPWM.setter
  def RawPWM(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.RawPWM', value, Anki.Vector.RawPWM)
    self._tag = self.Tag.RawPWM

  @property
  def SetConnectionStatus(self):
    "Anki.Vector.SwitchboardInterface.SetConnectionStatus SetConnectionStatus union property."
    msgbuffers.safety_check_tag('SetConnectionStatus', self._tag, self.Tag.SetConnectionStatus, self._tags_by_value)
    return self._data

  @SetConnectionStatus.setter
  def SetConnectionStatus(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetConnectionStatus', value, Anki.Vector.SwitchboardInterface.SetConnectionStatus)
    self._tag = self.Tag.SetConnectionStatus

  @property
  def SendBLEConnectionStatus(self):
    "Anki.Vector.SwitchboardInterface.SendBLEConnectionStatus SendBLEConnectionStatus union property."
    msgbuffers.safety_check_tag('SendBLEConnectionStatus', self._tag, self.Tag.SendBLEConnectionStatus, self._tags_by_value)
    return self._data

  @SendBLEConnectionStatus.setter
  def SendBLEConnectionStatus(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SendBLEConnectionStatus', value, Anki.Vector.SwitchboardInterface.SendBLEConnectionStatus)
    self._tag = self.Tag.SendBLEConnectionStatus

  @property
  def SetBLEPin(self):
    "Anki.Vector.SwitchboardInterface.SetBLEPin SetBLEPin union property."
    msgbuffers.safety_check_tag('SetBLEPin', self._tag, self.Tag.SetBLEPin, self._tags_by_value)
    return self._data

  @SetBLEPin.setter
  def SetBLEPin(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetBLEPin', value, Anki.Vector.SwitchboardInterface.SetBLEPin)
    self._tag = self.Tag.SetBLEPin

  @property
  def WifiScanResponse(self):
    "Anki.Vector.SwitchboardInterface.WifiScanResponse WifiScanResponse union property."
    msgbuffers.safety_check_tag('WifiScanResponse', self._tag, self.Tag.WifiScanResponse, self._tags_by_value)
    return self._data

  @WifiScanResponse.setter
  def WifiScanResponse(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.WifiScanResponse', value, Anki.Vector.SwitchboardInterface.WifiScanResponse)
    self._tag = self.Tag.WifiScanResponse

  @property
  def WifiConnectResponse(self):
    "Anki.Vector.SwitchboardInterface.WifiConnectResponse WifiConnectResponse union property."
    msgbuffers.safety_check_tag('WifiConnectResponse', self._tag, self.Tag.WifiConnectResponse, self._tags_by_value)
    return self._data

  @WifiConnectResponse.setter
  def WifiConnectResponse(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.WifiConnectResponse', value, Anki.Vector.SwitchboardInterface.WifiConnectResponse)
    self._tag = self.Tag.WifiConnectResponse

  @property
  def HasBleKeysResponse(self):
    "Anki.Vector.SwitchboardInterface.HasBleKeysResponse HasBleKeysResponse union property."
    msgbuffers.safety_check_tag('HasBleKeysResponse', self._tag, self.Tag.HasBleKeysResponse, self._tags_by_value)
    return self._data

  @HasBleKeysResponse.setter
  def HasBleKeysResponse(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.HasBleKeysResponse', value, Anki.Vector.SwitchboardInterface.HasBleKeysResponse)
    self._tag = self.Tag.HasBleKeysResponse

  @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(
      'MessageGameToEngine.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(
      'MessageGameToEngine.ActivateExperimentResponse', value, Anki.Util.AnkiLab.ActivateExperimentResponse)
    self._tag = self.Tag.ActivateExperimentResponse

  @property
  def ConnectToUiDevice(self):
    "Anki.Vector.ExternalInterface.ConnectToUiDevice ConnectToUiDevice union property."
    msgbuffers.safety_check_tag('ConnectToUiDevice', self._tag, self.Tag.ConnectToUiDevice, self._tags_by_value)
    return self._data

  @ConnectToUiDevice.setter
  def ConnectToUiDevice(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.ConnectToUiDevice', value, Anki.Vector.ExternalInterface.ConnectToUiDevice)
    self._tag = self.Tag.ConnectToUiDevice

  @property
  def DisconnectFromUiDevice(self):
    "Anki.Vector.ExternalInterface.DisconnectFromUiDevice DisconnectFromUiDevice union property."
    msgbuffers.safety_check_tag('DisconnectFromUiDevice', self._tag, self.Tag.DisconnectFromUiDevice, self._tags_by_value)
    return self._data

  @DisconnectFromUiDevice.setter
  def DisconnectFromUiDevice(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.DisconnectFromUiDevice', value, Anki.Vector.ExternalInterface.DisconnectFromUiDevice)
    self._tag = self.Tag.DisconnectFromUiDevice

  @property
  def UserLoggedIn(self):
    "Anki.Vector.ExternalInterface.UserLoggedIn UserLoggedIn union property."
    msgbuffers.safety_check_tag('UserLoggedIn', self._tag, self.Tag.UserLoggedIn, self._tags_by_value)
    return self._data

  @UserLoggedIn.setter
  def UserLoggedIn(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.UserLoggedIn', value, Anki.Vector.ExternalInterface.UserLoggedIn)
    self._tag = self.Tag.UserLoggedIn

  @property
  def DriveWheels(self):
    "Anki.Vector.ExternalInterface.DriveWheels DriveWheels union property."
    msgbuffers.safety_check_tag('DriveWheels', self._tag, self.Tag.DriveWheels, self._tags_by_value)
    return self._data

  @DriveWheels.setter
  def DriveWheels(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.DriveWheels', value, Anki.Vector.ExternalInterface.DriveWheels)
    self._tag = self.Tag.DriveWheels

  @property
  def EnableLiftPower(self):
    "Anki.Vector.ExternalInterface.EnableLiftPower EnableLiftPower union property."
    msgbuffers.safety_check_tag('EnableLiftPower', self._tag, self.Tag.EnableLiftPower, self._tags_by_value)
    return self._data

  @EnableLiftPower.setter
  def EnableLiftPower(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.EnableLiftPower', value, Anki.Vector.ExternalInterface.EnableLiftPower)
    self._tag = self.Tag.EnableLiftPower

  @property
  def EnableCliffSensor(self):
    "Anki.Vector.ExternalInterface.EnableCliffSensor EnableCliffSensor union property."
    msgbuffers.safety_check_tag('EnableCliffSensor', self._tag, self.Tag.EnableCliffSensor, self._tags_by_value)
    return self._data

  @EnableCliffSensor.setter
  def EnableCliffSensor(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.EnableCliffSensor', value, Anki.Vector.ExternalInterface.EnableCliffSensor)
    self._tag = self.Tag.EnableCliffSensor

  @property
  def EnableStopOnCliff(self):
    "Anki.Vector.ExternalInterface.EnableStopOnCliff EnableStopOnCliff union property."
    msgbuffers.safety_check_tag('EnableStopOnCliff', self._tag, self.Tag.EnableStopOnCliff, self._tags_by_value)
    return self._data

  @EnableStopOnCliff.setter
  def EnableStopOnCliff(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.EnableStopOnCliff', value, Anki.Vector.ExternalInterface.EnableStopOnCliff)
    self._tag = self.Tag.EnableStopOnCliff

  @property
  def StopAllMotors(self):
    "Anki.Vector.ExternalInterface.StopAllMotors StopAllMotors union property."
    msgbuffers.safety_check_tag('StopAllMotors', self._tag, self.Tag.StopAllMotors, self._tags_by_value)
    return self._data

  @StopAllMotors.setter
  def StopAllMotors(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.StopAllMotors', value, Anki.Vector.ExternalInterface.StopAllMotors)
    self._tag = self.Tag.StopAllMotors

  @property
  def ControllerGains(self):
    "Anki.Vector.ExternalInterface.ControllerGains ControllerGains union property."
    msgbuffers.safety_check_tag('ControllerGains', self._tag, self.Tag.ControllerGains, self._tags_by_value)
    return self._data

  @ControllerGains.setter
  def ControllerGains(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.ControllerGains', value, Anki.Vector.ExternalInterface.ControllerGains)
    self._tag = self.Tag.ControllerGains

  @property
  def RollActionParams(self):
    "Anki.Vector.ExternalInterface.RollActionParams RollActionParams union property."
    msgbuffers.safety_check_tag('RollActionParams', self._tag, self.Tag.RollActionParams, self._tags_by_value)
    return self._data

  @RollActionParams.setter
  def RollActionParams(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.RollActionParams', value, Anki.Vector.ExternalInterface.RollActionParams)
    self._tag = self.Tag.RollActionParams

  @property
  def SetMotionModelParams(self):
    "Anki.Vector.ExternalInterface.SetMotionModelParams SetMotionModelParams union property."
    msgbuffers.safety_check_tag('SetMotionModelParams', self._tag, self.Tag.SetMotionModelParams, self._tags_by_value)
    return self._data

  @SetMotionModelParams.setter
  def SetMotionModelParams(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetMotionModelParams', value, Anki.Vector.ExternalInterface.SetMotionModelParams)
    self._tag = self.Tag.SetMotionModelParams

  @property
  def SetRobotVolume(self):
    "Anki.Vector.ExternalInterface.SetRobotVolume SetRobotVolume union property."
    msgbuffers.safety_check_tag('SetRobotVolume', self._tag, self.Tag.SetRobotVolume, self._tags_by_value)
    return self._data

  @SetRobotVolume.setter
  def SetRobotVolume(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetRobotVolume', value, Anki.Vector.ExternalInterface.SetRobotVolume)
    self._tag = self.Tag.SetRobotVolume

  @property
  def ForceDelocalizeRobot(self):
    "Anki.Vector.ExternalInterface.ForceDelocalizeRobot ForceDelocalizeRobot union property."
    msgbuffers.safety_check_tag('ForceDelocalizeRobot', self._tag, self.Tag.ForceDelocalizeRobot, self._tags_by_value)
    return self._data

  @ForceDelocalizeRobot.setter
  def ForceDelocalizeRobot(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.ForceDelocalizeRobot', value, Anki.Vector.ExternalInterface.ForceDelocalizeRobot)
    self._tag = self.Tag.ForceDelocalizeRobot

  @property
  def CancelAction(self):
    "Anki.Vector.ExternalInterface.CancelAction CancelAction union property."
    msgbuffers.safety_check_tag('CancelAction', self._tag, self.Tag.CancelAction, self._tags_by_value)
    return self._data

  @CancelAction.setter
  def CancelAction(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.CancelAction', value, Anki.Vector.ExternalInterface.CancelAction)
    self._tag = self.Tag.CancelAction

  @property
  def CancelActionByIdTag(self):
    "Anki.Vector.ExternalInterface.CancelActionByIdTag CancelActionByIdTag union property."
    msgbuffers.safety_check_tag('CancelActionByIdTag', self._tag, self.Tag.CancelActionByIdTag, self._tags_by_value)
    return self._data

  @CancelActionByIdTag.setter
  def CancelActionByIdTag(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.CancelActionByIdTag', value, Anki.Vector.ExternalInterface.CancelActionByIdTag)
    self._tag = self.Tag.CancelActionByIdTag

  @property
  def QueueSingleAction(self):
    "Anki.Vector.ExternalInterface.QueueSingleAction QueueSingleAction union property."
    msgbuffers.safety_check_tag('QueueSingleAction', self._tag, self.Tag.QueueSingleAction, self._tags_by_value)
    return self._data

  @QueueSingleAction.setter
  def QueueSingleAction(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.QueueSingleAction', value, Anki.Vector.ExternalInterface.QueueSingleAction)
    self._tag = self.Tag.QueueSingleAction

  @property
  def QueueCompoundAction(self):
    "Anki.Vector.ExternalInterface.QueueCompoundAction QueueCompoundAction union property."
    msgbuffers.safety_check_tag('QueueCompoundAction', self._tag, self.Tag.QueueCompoundAction, self._tags_by_value)
    return self._data

  @QueueCompoundAction.setter
  def QueueCompoundAction(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.QueueCompoundAction', value, Anki.Vector.ExternalInterface.QueueCompoundAction)
    self._tag = self.Tag.QueueCompoundAction

  @property
  def RedirectViz(self):
    "Anki.Vector.ExternalInterface.RedirectViz RedirectViz union property."
    msgbuffers.safety_check_tag('RedirectViz', self._tag, self.Tag.RedirectViz, self._tags_by_value)
    return self._data

  @RedirectViz.setter
  def RedirectViz(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.RedirectViz', value, Anki.Vector.ExternalInterface.RedirectViz)
    self._tag = self.Tag.RedirectViz

  @property
  def ImageRequest(self):
    "Anki.Vector.ExternalInterface.ImageRequest ImageRequest union property."
    msgbuffers.safety_check_tag('ImageRequest', self._tag, self.Tag.ImageRequest, self._tags_by_value)
    return self._data

  @ImageRequest.setter
  def ImageRequest(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.ImageRequest', value, Anki.Vector.ExternalInterface.ImageRequest)
    self._tag = self.Tag.ImageRequest

  @property
  def SaveImages(self):
    "Anki.Vector.ExternalInterface.SaveImages SaveImages union property."
    msgbuffers.safety_check_tag('SaveImages', self._tag, self.Tag.SaveImages, self._tags_by_value)
    return self._data

  @SaveImages.setter
  def SaveImages(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SaveImages', value, Anki.Vector.ExternalInterface.SaveImages)
    self._tag = self.Tag.SaveImages

  @property
  def EnableColorImages(self):
    "Anki.Vector.ExternalInterface.EnableColorImages EnableColorImages union property."
    msgbuffers.safety_check_tag('EnableColorImages', self._tag, self.Tag.EnableColorImages, self._tags_by_value)
    return self._data

  @EnableColorImages.setter
  def EnableColorImages(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.EnableColorImages', value, Anki.Vector.ExternalInterface.EnableColorImages)
    self._tag = self.Tag.EnableColorImages

  @property
  def SaveRobotState(self):
    "Anki.Vector.ExternalInterface.SaveRobotState SaveRobotState union property."
    msgbuffers.safety_check_tag('SaveRobotState', self._tag, self.Tag.SaveRobotState, self._tags_by_value)
    return self._data

  @SaveRobotState.setter
  def SaveRobotState(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SaveRobotState', value, Anki.Vector.ExternalInterface.SaveRobotState)
    self._tag = self.Tag.SaveRobotState

  @property
  def EnableDisplay(self):
    "Anki.Vector.ExternalInterface.EnableDisplay EnableDisplay union property."
    msgbuffers.safety_check_tag('EnableDisplay', self._tag, self.Tag.EnableDisplay, self._tags_by_value)
    return self._data

  @EnableDisplay.setter
  def EnableDisplay(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.EnableDisplay', value, Anki.Vector.ExternalInterface.EnableDisplay)
    self._tag = self.Tag.EnableDisplay

  @property
  def ExecuteTestPlan(self):
    "Anki.Vector.ExternalInterface.ExecuteTestPlan ExecuteTestPlan union property."
    msgbuffers.safety_check_tag('ExecuteTestPlan', self._tag, self.Tag.ExecuteTestPlan, self._tags_by_value)
    return self._data

  @ExecuteTestPlan.setter
  def ExecuteTestPlan(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.ExecuteTestPlan', value, Anki.Vector.ExternalInterface.ExecuteTestPlan)
    self._tag = self.Tag.ExecuteTestPlan

  @property
  def SelectNextObject(self):
    "Anki.Vector.ExternalInterface.SelectNextObject SelectNextObject union property."
    msgbuffers.safety_check_tag('SelectNextObject', self._tag, self.Tag.SelectNextObject, self._tags_by_value)
    return self._data

  @SelectNextObject.setter
  def SelectNextObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SelectNextObject', value, Anki.Vector.ExternalInterface.SelectNextObject)
    self._tag = self.Tag.SelectNextObject

  @property
  def SetRobotCarryingObject(self):
    "Anki.Vector.ExternalInterface.SetRobotCarryingObject SetRobotCarryingObject union property."
    msgbuffers.safety_check_tag('SetRobotCarryingObject', self._tag, self.Tag.SetRobotCarryingObject, self._tags_by_value)
    return self._data

  @SetRobotCarryingObject.setter
  def SetRobotCarryingObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetRobotCarryingObject', value, Anki.Vector.ExternalInterface.SetRobotCarryingObject)
    self._tag = self.Tag.SetRobotCarryingObject

  @property
  def DeleteAllCustomObjects(self):
    "Anki.Vector.ExternalInterface.DeleteAllCustomObjects DeleteAllCustomObjects union property."
    msgbuffers.safety_check_tag('DeleteAllCustomObjects', self._tag, self.Tag.DeleteAllCustomObjects, self._tags_by_value)
    return self._data

  @DeleteAllCustomObjects.setter
  def DeleteAllCustomObjects(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.DeleteAllCustomObjects', value, Anki.Vector.ExternalInterface.DeleteAllCustomObjects)
    self._tag = self.Tag.DeleteAllCustomObjects

  @property
  def VisionWhileMoving(self):
    "Anki.Vector.ExternalInterface.VisionWhileMoving VisionWhileMoving union property."
    msgbuffers.safety_check_tag('VisionWhileMoving', self._tag, self.Tag.VisionWhileMoving, self._tags_by_value)
    return self._data

  @VisionWhileMoving.setter
  def VisionWhileMoving(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.VisionWhileMoving', value, Anki.Vector.ExternalInterface.VisionWhileMoving)
    self._tag = self.Tag.VisionWhileMoving

  @property
  def VisionRunMode(self):
    "Anki.Vector.ExternalInterface.VisionRunMode VisionRunMode union property."
    msgbuffers.safety_check_tag('VisionRunMode', self._tag, self.Tag.VisionRunMode, self._tags_by_value)
    return self._data

  @VisionRunMode.setter
  def VisionRunMode(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.VisionRunMode', value, Anki.Vector.ExternalInterface.VisionRunMode)
    self._tag = self.Tag.VisionRunMode

  @property
  def SaveFaceAlbumToFile(self):
    "Anki.Vector.ExternalInterface.SaveFaceAlbumToFile SaveFaceAlbumToFile union property."
    msgbuffers.safety_check_tag('SaveFaceAlbumToFile', self._tag, self.Tag.SaveFaceAlbumToFile, self._tags_by_value)
    return self._data

  @SaveFaceAlbumToFile.setter
  def SaveFaceAlbumToFile(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SaveFaceAlbumToFile', value, Anki.Vector.ExternalInterface.SaveFaceAlbumToFile)
    self._tag = self.Tag.SaveFaceAlbumToFile

  @property
  def LoadFaceAlbumFromFile(self):
    "Anki.Vector.ExternalInterface.LoadFaceAlbumFromFile LoadFaceAlbumFromFile union property."
    msgbuffers.safety_check_tag('LoadFaceAlbumFromFile', self._tag, self.Tag.LoadFaceAlbumFromFile, self._tags_by_value)
    return self._data

  @LoadFaceAlbumFromFile.setter
  def LoadFaceAlbumFromFile(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.LoadFaceAlbumFromFile', value, Anki.Vector.ExternalInterface.LoadFaceAlbumFromFile)
    self._tag = self.Tag.LoadFaceAlbumFromFile

  @property
  def SetCameraCaptureFormat(self):
    "Anki.Vector.ExternalInterface.SetCameraCaptureFormat SetCameraCaptureFormat union property."
    msgbuffers.safety_check_tag('SetCameraCaptureFormat', self._tag, self.Tag.SetCameraCaptureFormat, self._tags_by_value)
    return self._data

  @SetCameraCaptureFormat.setter
  def SetCameraCaptureFormat(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetCameraCaptureFormat', value, Anki.Vector.ExternalInterface.SetCameraCaptureFormat)
    self._tag = self.Tag.SetCameraCaptureFormat

  @property
  def SetMemoryMapRenderEnabled(self):
    "Anki.Vector.ExternalInterface.SetMemoryMapRenderEnabled SetMemoryMapRenderEnabled union property."
    msgbuffers.safety_check_tag('SetMemoryMapRenderEnabled', self._tag, self.Tag.SetMemoryMapRenderEnabled, self._tags_by_value)
    return self._data

  @SetMemoryMapRenderEnabled.setter
  def SetMemoryMapRenderEnabled(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetMemoryMapRenderEnabled', value, Anki.Vector.ExternalInterface.SetMemoryMapRenderEnabled)
    self._tag = self.Tag.SetMemoryMapRenderEnabled

  @property
  def FakeTriggerWordDetected(self):
    "Anki.Vector.ExternalInterface.FakeTriggerWordDetected FakeTriggerWordDetected union property."
    msgbuffers.safety_check_tag('FakeTriggerWordDetected', self._tag, self.Tag.FakeTriggerWordDetected, self._tags_by_value)
    return self._data

  @FakeTriggerWordDetected.setter
  def FakeTriggerWordDetected(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.FakeTriggerWordDetected', value, Anki.Vector.ExternalInterface.FakeTriggerWordDetected)
    self._tag = self.Tag.FakeTriggerWordDetected

  @property
  def FakeCloudIntent(self):
    "Anki.Vector.ExternalInterface.FakeCloudIntent FakeCloudIntent union property."
    msgbuffers.safety_check_tag('FakeCloudIntent', self._tag, self.Tag.FakeCloudIntent, self._tags_by_value)
    return self._data

  @FakeCloudIntent.setter
  def FakeCloudIntent(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.FakeCloudIntent', value, Anki.Vector.ExternalInterface.FakeCloudIntent)
    self._tag = self.Tag.FakeCloudIntent

  @property
  def FakeUserIntent(self):
    "Anki.Vector.ExternalInterface.FakeUserIntent FakeUserIntent union property."
    msgbuffers.safety_check_tag('FakeUserIntent', self._tag, self.Tag.FakeUserIntent, self._tags_by_value)
    return self._data

  @FakeUserIntent.setter
  def FakeUserIntent(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.FakeUserIntent', value, Anki.Vector.ExternalInterface.FakeUserIntent)
    self._tag = self.Tag.FakeUserIntent

  @property
  def ExecuteBehaviorByID(self):
    "Anki.Vector.ExternalInterface.ExecuteBehaviorByID ExecuteBehaviorByID union property."
    msgbuffers.safety_check_tag('ExecuteBehaviorByID', self._tag, self.Tag.ExecuteBehaviorByID, self._tags_by_value)
    return self._data

  @ExecuteBehaviorByID.setter
  def ExecuteBehaviorByID(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.ExecuteBehaviorByID', value, Anki.Vector.ExternalInterface.ExecuteBehaviorByID)
    self._tag = self.Tag.ExecuteBehaviorByID

  @property
  def SetLiftLoadTestAsActivatable(self):
    "Anki.Vector.ExternalInterface.SetLiftLoadTestAsActivatable SetLiftLoadTestAsActivatable union property."
    msgbuffers.safety_check_tag('SetLiftLoadTestAsActivatable', self._tag, self.Tag.SetLiftLoadTestAsActivatable, self._tags_by_value)
    return self._data

  @SetLiftLoadTestAsActivatable.setter
  def SetLiftLoadTestAsActivatable(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetLiftLoadTestAsActivatable', value, Anki.Vector.ExternalInterface.SetLiftLoadTestAsActivatable)
    self._tag = self.Tag.SetLiftLoadTestAsActivatable

  @property
  def AbortPath(self):
    "Anki.Vector.ExternalInterface.AbortPath AbortPath union property."
    msgbuffers.safety_check_tag('AbortPath', self._tag, self.Tag.AbortPath, self._tags_by_value)
    return self._data

  @AbortPath.setter
  def AbortPath(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.AbortPath', value, Anki.Vector.ExternalInterface.AbortPath)
    self._tag = self.Tag.AbortPath

  @property
  def AbortAll(self):
    "Anki.Vector.ExternalInterface.AbortAll AbortAll union property."
    msgbuffers.safety_check_tag('AbortAll', self._tag, self.Tag.AbortAll, self._tags_by_value)
    return self._data

  @AbortAll.setter
  def AbortAll(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.AbortAll', value, Anki.Vector.ExternalInterface.AbortAll)
    self._tag = self.Tag.AbortAll

  @property
  def StartTestMode(self):
    "Anki.Vector.ExternalInterface.StartTestMode StartTestMode union property."
    msgbuffers.safety_check_tag('StartTestMode', self._tag, self.Tag.StartTestMode, self._tags_by_value)
    return self._data

  @StartTestMode.setter
  def StartTestMode(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.StartTestMode', value, Anki.Vector.ExternalInterface.StartTestMode)
    self._tag = self.Tag.StartTestMode

  @property
  def DrawPoseMarker(self):
    "Anki.Vector.ExternalInterface.DrawPoseMarker DrawPoseMarker union property."
    msgbuffers.safety_check_tag('DrawPoseMarker', self._tag, self.Tag.DrawPoseMarker, self._tags_by_value)
    return self._data

  @DrawPoseMarker.setter
  def DrawPoseMarker(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.DrawPoseMarker', value, Anki.Vector.ExternalInterface.DrawPoseMarker)
    self._tag = self.Tag.DrawPoseMarker

  @property
  def ErasePoseMarker(self):
    "Anki.Vector.ExternalInterface.ErasePoseMarker ErasePoseMarker union property."
    msgbuffers.safety_check_tag('ErasePoseMarker', self._tag, self.Tag.ErasePoseMarker, self._tags_by_value)
    return self._data

  @ErasePoseMarker.setter
  def ErasePoseMarker(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.ErasePoseMarker', value, Anki.Vector.ExternalInterface.ErasePoseMarker)
    self._tag = self.Tag.ErasePoseMarker

  @property
  def VisualizeQuad(self):
    "Anki.Vector.ExternalInterface.VisualizeQuad VisualizeQuad union property."
    msgbuffers.safety_check_tag('VisualizeQuad', self._tag, self.Tag.VisualizeQuad, self._tags_by_value)
    return self._data

  @VisualizeQuad.setter
  def VisualizeQuad(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.VisualizeQuad', value, Anki.Vector.ExternalInterface.VisualizeQuad)
    self._tag = self.Tag.VisualizeQuad

  @property
  def EraseQuad(self):
    "Anki.Vector.ExternalInterface.EraseQuad EraseQuad union property."
    msgbuffers.safety_check_tag('EraseQuad', self._tag, self.Tag.EraseQuad, self._tags_by_value)
    return self._data

  @EraseQuad.setter
  def EraseQuad(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.EraseQuad', value, Anki.Vector.ExternalInterface.EraseQuad)
    self._tag = self.Tag.EraseQuad

  @property
  def ReadAnimationFile(self):
    "Anki.Vector.ExternalInterface.ReadAnimationFile ReadAnimationFile union property."
    msgbuffers.safety_check_tag('ReadAnimationFile', self._tag, self.Tag.ReadAnimationFile, self._tags_by_value)
    return self._data

  @ReadAnimationFile.setter
  def ReadAnimationFile(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.ReadAnimationFile', value, Anki.Vector.ExternalInterface.ReadAnimationFile)
    self._tag = self.Tag.ReadAnimationFile

  @property
  def RequestAvailableAnimationGroups(self):
    "Anki.Vector.ExternalInterface.RequestAvailableAnimationGroups RequestAvailableAnimationGroups union property."
    msgbuffers.safety_check_tag('RequestAvailableAnimationGroups', self._tag, self.Tag.RequestAvailableAnimationGroups, self._tags_by_value)
    return self._data

  @RequestAvailableAnimationGroups.setter
  def RequestAvailableAnimationGroups(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.RequestAvailableAnimationGroups', value, Anki.Vector.ExternalInterface.RequestAvailableAnimationGroups)
    self._tag = self.Tag.RequestAvailableAnimationGroups

  @property
  def PushDrivingAnimations(self):
    "Anki.Vector.ExternalInterface.PushDrivingAnimations PushDrivingAnimations union property."
    msgbuffers.safety_check_tag('PushDrivingAnimations', self._tag, self.Tag.PushDrivingAnimations, self._tags_by_value)
    return self._data

  @PushDrivingAnimations.setter
  def PushDrivingAnimations(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.PushDrivingAnimations', value, Anki.Vector.ExternalInterface.PushDrivingAnimations)
    self._tag = self.Tag.PushDrivingAnimations

  @property
  def RemoveDrivingAnimations(self):
    "Anki.Vector.ExternalInterface.RemoveDrivingAnimations RemoveDrivingAnimations union property."
    msgbuffers.safety_check_tag('RemoveDrivingAnimations', self._tag, self.Tag.RemoveDrivingAnimations, self._tags_by_value)
    return self._data

  @RemoveDrivingAnimations.setter
  def RemoveDrivingAnimations(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.RemoveDrivingAnimations', value, Anki.Vector.ExternalInterface.RemoveDrivingAnimations)
    self._tag = self.Tag.RemoveDrivingAnimations

  @property
  def DisplayProceduralFace(self):
    "Anki.Vector.ExternalInterface.DisplayProceduralFace DisplayProceduralFace union property."
    msgbuffers.safety_check_tag('DisplayProceduralFace', self._tag, self.Tag.DisplayProceduralFace, self._tags_by_value)
    return self._data

  @DisplayProceduralFace.setter
  def DisplayProceduralFace(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.DisplayProceduralFace', value, Anki.Vector.ExternalInterface.DisplayProceduralFace)
    self._tag = self.Tag.DisplayProceduralFace

  @property
  def SetFaceHue(self):
    "Anki.Vector.ExternalInterface.SetFaceHue SetFaceHue union property."
    msgbuffers.safety_check_tag('SetFaceHue', self._tag, self.Tag.SetFaceHue, self._tags_by_value)
    return self._data

  @SetFaceHue.setter
  def SetFaceHue(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetFaceHue', value, Anki.Vector.ExternalInterface.SetFaceHue)
    self._tag = self.Tag.SetFaceHue

  @property
  def DisplayFaceImageBinaryChunk(self):
    "Anki.Vector.ExternalInterface.DisplayFaceImageBinaryChunk DisplayFaceImageBinaryChunk union property."
    msgbuffers.safety_check_tag('DisplayFaceImageBinaryChunk', self._tag, self.Tag.DisplayFaceImageBinaryChunk, self._tags_by_value)
    return self._data

  @DisplayFaceImageBinaryChunk.setter
  def DisplayFaceImageBinaryChunk(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.DisplayFaceImageBinaryChunk', value, Anki.Vector.ExternalInterface.DisplayFaceImageBinaryChunk)
    self._tag = self.Tag.DisplayFaceImageBinaryChunk

  @property
  def SetActiveObjectLEDs(self):
    "Anki.Vector.ExternalInterface.SetActiveObjectLEDs SetActiveObjectLEDs union property."
    msgbuffers.safety_check_tag('SetActiveObjectLEDs', self._tag, self.Tag.SetActiveObjectLEDs, self._tags_by_value)
    return self._data

  @SetActiveObjectLEDs.setter
  def SetActiveObjectLEDs(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetActiveObjectLEDs', value, Anki.Vector.ExternalInterface.SetActiveObjectLEDs)
    self._tag = self.Tag.SetActiveObjectLEDs

  @property
  def SetAllActiveObjectLEDs(self):
    "Anki.Vector.ExternalInterface.SetAllActiveObjectLEDs SetAllActiveObjectLEDs union property."
    msgbuffers.safety_check_tag('SetAllActiveObjectLEDs', self._tag, self.Tag.SetAllActiveObjectLEDs, self._tags_by_value)
    return self._data

  @SetAllActiveObjectLEDs.setter
  def SetAllActiveObjectLEDs(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetAllActiveObjectLEDs', value, Anki.Vector.ExternalInterface.SetAllActiveObjectLEDs)
    self._tag = self.Tag.SetAllActiveObjectLEDs

  @property
  def SetBackpackLEDs(self):
    "Anki.Vector.ExternalInterface.SetBackpackLEDs SetBackpackLEDs union property."
    msgbuffers.safety_check_tag('SetBackpackLEDs', self._tag, self.Tag.SetBackpackLEDs, self._tags_by_value)
    return self._data

  @SetBackpackLEDs.setter
  def SetBackpackLEDs(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetBackpackLEDs', value, Anki.Vector.ExternalInterface.SetBackpackLEDs)
    self._tag = self.Tag.SetBackpackLEDs

  @property
  def EnableLightStates(self):
    "Anki.Vector.ExternalInterface.EnableLightStates EnableLightStates union property."
    msgbuffers.safety_check_tag('EnableLightStates', self._tag, self.Tag.EnableLightStates, self._tags_by_value)
    return self._data

  @EnableLightStates.setter
  def EnableLightStates(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.EnableLightStates', value, Anki.Vector.ExternalInterface.EnableLightStates)
    self._tag = self.Tag.EnableLightStates

  @property
  def PlayCubeAnim(self):
    "Anki.Vector.ExternalInterface.PlayCubeAnim PlayCubeAnim union property."
    msgbuffers.safety_check_tag('PlayCubeAnim', self._tag, self.Tag.PlayCubeAnim, self._tags_by_value)
    return self._data

  @PlayCubeAnim.setter
  def PlayCubeAnim(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.PlayCubeAnim', value, Anki.Vector.ExternalInterface.PlayCubeAnim)
    self._tag = self.Tag.PlayCubeAnim

  @property
  def StopCubeAnim(self):
    "Anki.Vector.ExternalInterface.StopCubeAnim StopCubeAnim union property."
    msgbuffers.safety_check_tag('StopCubeAnim', self._tag, self.Tag.StopCubeAnim, self._tags_by_value)
    return self._data

  @StopCubeAnim.setter
  def StopCubeAnim(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.StopCubeAnim', value, Anki.Vector.ExternalInterface.StopCubeAnim)
    self._tag = self.Tag.StopCubeAnim

  @property
  def SetOnboardingStage(self):
    "Anki.Vector.ExternalInterface.SetOnboardingStage SetOnboardingStage union property."
    msgbuffers.safety_check_tag('SetOnboardingStage', self._tag, self.Tag.SetOnboardingStage, self._tags_by_value)
    return self._data

  @SetOnboardingStage.setter
  def SetOnboardingStage(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetOnboardingStage', value, Anki.Vector.ExternalInterface.SetOnboardingStage)
    self._tag = self.Tag.SetOnboardingStage

  @property
  def MoodMessage(self):
    "Anki.Vector.ExternalInterface.MoodMessage MoodMessage union property."
    msgbuffers.safety_check_tag('MoodMessage', self._tag, self.Tag.MoodMessage, self._tags_by_value)
    return self._data

  @MoodMessage.setter
  def MoodMessage(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.MoodMessage', value, Anki.Vector.ExternalInterface.MoodMessage)
    self._tag = self.Tag.MoodMessage

  @property
  def SetDebugConsoleVarMessage(self):
    "Anki.Vector.ExternalInterface.SetDebugConsoleVarMessage SetDebugConsoleVarMessage union property."
    msgbuffers.safety_check_tag('SetDebugConsoleVarMessage', self._tag, self.Tag.SetDebugConsoleVarMessage, self._tags_by_value)
    return self._data

  @SetDebugConsoleVarMessage.setter
  def SetDebugConsoleVarMessage(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetDebugConsoleVarMessage', value, Anki.Vector.ExternalInterface.SetDebugConsoleVarMessage)
    self._tag = self.Tag.SetDebugConsoleVarMessage

  @property
  def SetAnimDebugConsoleVarMessage(self):
    "Anki.Vector.ExternalInterface.SetAnimDebugConsoleVarMessage SetAnimDebugConsoleVarMessage union property."
    msgbuffers.safety_check_tag('SetAnimDebugConsoleVarMessage', self._tag, self.Tag.SetAnimDebugConsoleVarMessage, self._tags_by_value)
    return self._data

  @SetAnimDebugConsoleVarMessage.setter
  def SetAnimDebugConsoleVarMessage(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetAnimDebugConsoleVarMessage', value, Anki.Vector.ExternalInterface.SetAnimDebugConsoleVarMessage)
    self._tag = self.Tag.SetAnimDebugConsoleVarMessage

  @property
  def RunDebugConsoleFuncMessage(self):
    "Anki.Vector.ExternalInterface.RunDebugConsoleFuncMessage RunDebugConsoleFuncMessage union property."
    msgbuffers.safety_check_tag('RunDebugConsoleFuncMessage', self._tag, self.Tag.RunDebugConsoleFuncMessage, self._tags_by_value)
    return self._data

  @RunDebugConsoleFuncMessage.setter
  def RunDebugConsoleFuncMessage(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.RunDebugConsoleFuncMessage', value, Anki.Vector.ExternalInterface.RunDebugConsoleFuncMessage)
    self._tag = self.Tag.RunDebugConsoleFuncMessage

  @property
  def RunAnimDebugConsoleFuncMessage(self):
    "Anki.Vector.ExternalInterface.RunAnimDebugConsoleFuncMessage RunAnimDebugConsoleFuncMessage union property."
    msgbuffers.safety_check_tag('RunAnimDebugConsoleFuncMessage', self._tag, self.Tag.RunAnimDebugConsoleFuncMessage, self._tags_by_value)
    return self._data

  @RunAnimDebugConsoleFuncMessage.setter
  def RunAnimDebugConsoleFuncMessage(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.RunAnimDebugConsoleFuncMessage', value, Anki.Vector.ExternalInterface.RunAnimDebugConsoleFuncMessage)
    self._tag = self.Tag.RunAnimDebugConsoleFuncMessage

  @property
  def GetDebugConsoleVarMessage(self):
    "Anki.Vector.ExternalInterface.GetDebugConsoleVarMessage GetDebugConsoleVarMessage union property."
    msgbuffers.safety_check_tag('GetDebugConsoleVarMessage', self._tag, self.Tag.GetDebugConsoleVarMessage, self._tags_by_value)
    return self._data

  @GetDebugConsoleVarMessage.setter
  def GetDebugConsoleVarMessage(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.GetDebugConsoleVarMessage', value, Anki.Vector.ExternalInterface.GetDebugConsoleVarMessage)
    self._tag = self.Tag.GetDebugConsoleVarMessage

  @property
  def GetAllDebugConsoleVarMessage(self):
    "Anki.Vector.ExternalInterface.GetAllDebugConsoleVarMessage GetAllDebugConsoleVarMessage union property."
    msgbuffers.safety_check_tag('GetAllDebugConsoleVarMessage', self._tag, self.Tag.GetAllDebugConsoleVarMessage, self._tags_by_value)
    return self._data

  @GetAllDebugConsoleVarMessage.setter
  def GetAllDebugConsoleVarMessage(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.GetAllDebugConsoleVarMessage', value, Anki.Vector.ExternalInterface.GetAllDebugConsoleVarMessage)
    self._tag = self.Tag.GetAllDebugConsoleVarMessage

  @property
  def GetJsonDasLogsMessage(self):
    "Anki.Vector.ExternalInterface.GetJsonDasLogsMessage GetJsonDasLogsMessage union property."
    msgbuffers.safety_check_tag('GetJsonDasLogsMessage', self._tag, self.Tag.GetJsonDasLogsMessage, self._tags_by_value)
    return self._data

  @GetJsonDasLogsMessage.setter
  def GetJsonDasLogsMessage(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.GetJsonDasLogsMessage', value, Anki.Vector.ExternalInterface.GetJsonDasLogsMessage)
    self._tag = self.Tag.GetJsonDasLogsMessage

  @property
  def SetEnableSpeedChooser(self):
    "Anki.Vector.ExternalInterface.SetEnableSpeedChooser SetEnableSpeedChooser union property."
    msgbuffers.safety_check_tag('SetEnableSpeedChooser', self._tag, self.Tag.SetEnableSpeedChooser, self._tags_by_value)
    return self._data

  @SetEnableSpeedChooser.setter
  def SetEnableSpeedChooser(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetEnableSpeedChooser', value, Anki.Vector.ExternalInterface.SetEnableSpeedChooser)
    self._tag = self.Tag.SetEnableSpeedChooser

  @property
  def LogRawCliffData(self):
    "Anki.Vector.ExternalInterface.LogRawCliffData LogRawCliffData union property."
    msgbuffers.safety_check_tag('LogRawCliffData', self._tag, self.Tag.LogRawCliffData, self._tags_by_value)
    return self._data

  @LogRawCliffData.setter
  def LogRawCliffData(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.LogRawCliffData', value, Anki.Vector.ExternalInterface.LogRawCliffData)
    self._tag = self.Tag.LogRawCliffData

  @property
  def LogRawProxData(self):
    "Anki.Vector.ExternalInterface.LogRawProxData LogRawProxData union property."
    msgbuffers.safety_check_tag('LogRawProxData', self._tag, self.Tag.LogRawProxData, self._tags_by_value)
    return self._data

  @LogRawProxData.setter
  def LogRawProxData(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.LogRawProxData', value, Anki.Vector.ExternalInterface.LogRawProxData)
    self._tag = self.Tag.LogRawProxData

  @property
  def ConnectToCube(self):
    "Anki.Vector.ExternalInterface.ConnectToCube ConnectToCube union property."
    msgbuffers.safety_check_tag('ConnectToCube', self._tag, self.Tag.ConnectToCube, self._tags_by_value)
    return self._data

  @ConnectToCube.setter
  def ConnectToCube(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.ConnectToCube', value, Anki.Vector.ExternalInterface.ConnectToCube)
    self._tag = self.Tag.ConnectToCube

  @property
  def DisconnectFromCube(self):
    "Anki.Vector.ExternalInterface.DisconnectFromCube DisconnectFromCube union property."
    msgbuffers.safety_check_tag('DisconnectFromCube', self._tag, self.Tag.DisconnectFromCube, self._tags_by_value)
    return self._data

  @DisconnectFromCube.setter
  def DisconnectFromCube(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.DisconnectFromCube', value, Anki.Vector.ExternalInterface.DisconnectFromCube)
    self._tag = self.Tag.DisconnectFromCube

  @property
  def ForgetPreferredCube(self):
    "Anki.Vector.ExternalInterface.ForgetPreferredCube ForgetPreferredCube union property."
    msgbuffers.safety_check_tag('ForgetPreferredCube', self._tag, self.Tag.ForgetPreferredCube, self._tags_by_value)
    return self._data

  @ForgetPreferredCube.setter
  def ForgetPreferredCube(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.ForgetPreferredCube', value, Anki.Vector.ExternalInterface.ForgetPreferredCube)
    self._tag = self.Tag.ForgetPreferredCube

  @property
  def SetPreferredCube(self):
    "Anki.Vector.ExternalInterface.SetPreferredCube SetPreferredCube union property."
    msgbuffers.safety_check_tag('SetPreferredCube', self._tag, self.Tag.SetPreferredCube, self._tags_by_value)
    return self._data

  @SetPreferredCube.setter
  def SetPreferredCube(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetPreferredCube', value, Anki.Vector.ExternalInterface.SetPreferredCube)
    self._tag = self.Tag.SetPreferredCube

  @property
  def SendAvailableObjects(self):
    "Anki.Vector.ExternalInterface.SendAvailableObjects SendAvailableObjects union property."
    msgbuffers.safety_check_tag('SendAvailableObjects', self._tag, self.Tag.SendAvailableObjects, self._tags_by_value)
    return self._data

  @SendAvailableObjects.setter
  def SendAvailableObjects(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SendAvailableObjects', value, Anki.Vector.ExternalInterface.SendAvailableObjects)
    self._tag = self.Tag.SendAvailableObjects

  @property
  def SaveCalibrationImage(self):
    "Anki.Vector.ExternalInterface.SaveCalibrationImage SaveCalibrationImage union property."
    msgbuffers.safety_check_tag('SaveCalibrationImage', self._tag, self.Tag.SaveCalibrationImage, self._tags_by_value)
    return self._data

  @SaveCalibrationImage.setter
  def SaveCalibrationImage(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SaveCalibrationImage', value, Anki.Vector.ExternalInterface.SaveCalibrationImage)
    self._tag = self.Tag.SaveCalibrationImage

  @property
  def ClearCalibrationImages(self):
    "Anki.Vector.ExternalInterface.ClearCalibrationImages ClearCalibrationImages union property."
    msgbuffers.safety_check_tag('ClearCalibrationImages', self._tag, self.Tag.ClearCalibrationImages, self._tags_by_value)
    return self._data

  @ClearCalibrationImages.setter
  def ClearCalibrationImages(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.ClearCalibrationImages', value, Anki.Vector.ExternalInterface.ClearCalibrationImages)
    self._tag = self.Tag.ClearCalibrationImages

  @property
  def ComputeCameraCalibration(self):
    "Anki.Vector.ExternalInterface.ComputeCameraCalibration ComputeCameraCalibration union property."
    msgbuffers.safety_check_tag('ComputeCameraCalibration', self._tag, self.Tag.ComputeCameraCalibration, self._tags_by_value)
    return self._data

  @ComputeCameraCalibration.setter
  def ComputeCameraCalibration(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.ComputeCameraCalibration', value, Anki.Vector.ExternalInterface.ComputeCameraCalibration)
    self._tag = self.Tag.ComputeCameraCalibration

  @property
  def TransferFile(self):
    "Anki.Vector.ExternalInterface.TransferFile TransferFile union property."
    msgbuffers.safety_check_tag('TransferFile', self._tag, self.Tag.TransferFile, self._tags_by_value)
    return self._data

  @TransferFile.setter
  def TransferFile(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.TransferFile', value, Anki.Vector.ExternalInterface.TransferFile)
    self._tag = self.Tag.TransferFile

  @property
  def SetCameraSettings(self):
    "Anki.Vector.ExternalInterface.SetCameraSettings SetCameraSettings union property."
    msgbuffers.safety_check_tag('SetCameraSettings', self._tag, self.Tag.SetCameraSettings, self._tags_by_value)
    return self._data

  @SetCameraSettings.setter
  def SetCameraSettings(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.SetCameraSettings', value, Anki.Vector.ExternalInterface.SetCameraSettings)
    self._tag = self.Tag.SetCameraSettings

  @property
  def RequestRobotSettings(self):
    "Anki.Vector.ExternalInterface.RequestRobotSettings RequestRobotSettings union property."
    msgbuffers.safety_check_tag('RequestRobotSettings', self._tag, self.Tag.RequestRobotSettings, self._tags_by_value)
    return self._data

  @RequestRobotSettings.setter
  def RequestRobotSettings(self, value):
    self._data = msgbuffers.validate_object(
      'MessageGameToEngine.RequestRobotSettings', value, Anki.Vector.ExternalInterface.RequestRobotSettings)
    self._tag = self.Tag.RequestRobotSettings

  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 MessageGameToEngine from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('MessageGameToEngine.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 MessageGameToEngine 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('MessageGameToEngine attempted to unpack unknown tag {tag}.'.format(tag=tag))

  def pack(self):
    "Writes the current MessageGameToEngine, 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 MessageGameToEngine.')

  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 < 171:
      return self._tag_size_methods[self._tag](self._data)
    else:
      return 1

  def __str__(self):
    if 0 <= self._tag < 171:
      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 < 171:
      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(
    UiDeviceConnectionWrongVersion=0,
    MoveHead=3,
    MoveLift=4,
    DriveArc=5,
    RobotHistoryRequest=6,
    DisplayFaceImageRGBChunk=8,
    AppIntent=9,
    CancelFaceEnrollment=10,
    RequestEnrolledNames=11,
    UpdateEnrolledFaceByID=12,
    EraseEnrolledFaceByID=13,
    EraseAllEnrolledFaces=14,
    SetFaceToEnroll=15,
    EnableVisionMode=16,
    RequestAvailableAnimations=17,
    GotoPose=18,
    DriveStraight=19,
    TurnInPlace=20,
    SetHeadAngle=21,
    SetLiftHeight=22,
    AlignWithObject=24,
    SetLiftAngle=25,
    DeleteCustomMarkerObjects=26,
    DeleteFixedCustomObjects=27,
    UndefineAllCustomMarkerObjects=28,
    CreateFixedCustomObject=29,
    DefineCustomBox=30,
    DefineCustomCube=31,
    DefineCustomWall=32,
    SetMemoryMapBroadcastFrequency_sec=33,
    PostAudioEvent=34,
    StopAllAudioEvents=35,
    PostAudioGameState=36,
    PostAudioSwitchState=37,
    PostAudioParameter=38,
    PostAudioMusicState=39,
    CalibrateMotors=40,
    CliffAlignToWhite=41,
    FlipBlock=42,
    GotoObject=43,
    MountCharger=44,
    PanAndTilt=45,
    PickupObject=46,
    PlaceObjectOnGround=47,
    PlaceObjectOnGroundHere=48,
    PlaceOnObject=49,
    PlaceRelObject=50,
    PlayAnimation=51,
    ListAnimations=52,
    PlayAnimationGroup=53,
    PlayAnimationTrigger=54,
    PopAWheelie=55,
    FacePlant=56,
    RealignWithObject=57,
    RollObject=58,
    SayText=59,
    SearchForNearbyObject=60,
    TrackToFace=61,
    TrackToObject=62,
    TrackToLaserPoint=63,
    TrackToPet=64,
    TurnInPlaceAtSpeed=65,
    TurnTowardsFace=66,
    TurnTowardsImagePoint=67,
    TurnTowardsLastFacePose=68,
    TurnTowardsObject=69,
    TurnTowardsPose=70,
    VisuallyVerifyFace=71,
    VisuallyVerifyObject=72,
    VisuallyVerifyNoObjectAtPose=73,
    Wait=74,
    WaitForImages=75,
    AdvertisementRegistrationMsg=76,
    AdvertisementMsg=77,
    Ping=78,
    SetVizOrigin=79,
    ImageChunk=80,
    CameraCalibration=81,
    IMURequest=82,
    IMUTemperature=83,
    StartControllerTestMode=84,
    RawPWM=85,
    SetConnectionStatus=86,
    SendBLEConnectionStatus=87,
    SetBLEPin=88,
    WifiScanResponse=89,
    WifiConnectResponse=90,
    HasBleKeysResponse=91,
    ActivateExperimentRequest=92,
    ActivateExperimentResponse=93,
    ConnectToUiDevice=94,
    DisconnectFromUiDevice=95,
    UserLoggedIn=96,
    DriveWheels=97,
    EnableLiftPower=98,
    EnableCliffSensor=99,
    EnableStopOnCliff=100,
    StopAllMotors=101,
    ControllerGains=102,
    RollActionParams=103,
    SetMotionModelParams=104,
    SetRobotVolume=105,
    ForceDelocalizeRobot=106,
    CancelAction=107,
    CancelActionByIdTag=108,
    QueueSingleAction=109,
    QueueCompoundAction=110,
    RedirectViz=111,
    ImageRequest=112,
    SaveImages=113,
    EnableColorImages=114,
    SaveRobotState=115,
    EnableDisplay=116,
    ExecuteTestPlan=117,
    SelectNextObject=118,
    SetRobotCarryingObject=119,
    DeleteAllCustomObjects=120,
    VisionWhileMoving=121,
    VisionRunMode=122,
    SaveFaceAlbumToFile=123,
    LoadFaceAlbumFromFile=124,
    SetCameraCaptureFormat=125,
    SetMemoryMapRenderEnabled=126,
    FakeTriggerWordDetected=127,
    FakeCloudIntent=128,
    FakeUserIntent=129,
    ExecuteBehaviorByID=130,
    SetLiftLoadTestAsActivatable=131,
    AbortPath=132,
    AbortAll=133,
    StartTestMode=134,
    DrawPoseMarker=135,
    ErasePoseMarker=136,
    VisualizeQuad=137,
    EraseQuad=138,
    ReadAnimationFile=139,
    RequestAvailableAnimationGroups=140,
    PushDrivingAnimations=141,
    RemoveDrivingAnimations=142,
    DisplayProceduralFace=143,
    SetFaceHue=144,
    DisplayFaceImageBinaryChunk=145,
    SetActiveObjectLEDs=146,
    SetAllActiveObjectLEDs=147,
    SetBackpackLEDs=148,
    EnableLightStates=149,
    PlayCubeAnim=150,
    StopCubeAnim=151,
    SetOnboardingStage=152,
    MoodMessage=153,
    SetDebugConsoleVarMessage=154,
    SetAnimDebugConsoleVarMessage=155,
    RunDebugConsoleFuncMessage=156,
    RunAnimDebugConsoleFuncMessage=157,
    GetDebugConsoleVarMessage=158,
    GetAllDebugConsoleVarMessage=159,
    GetJsonDasLogsMessage=160,
    SetEnableSpeedChooser=161,
    LogRawCliffData=162,
    LogRawProxData=163,
    ConnectToCube=164,
    DisconnectFromCube=165,
    ForgetPreferredCube=166,
    SetPreferredCube=167,
    SendAvailableObjects=168,
    SaveCalibrationImage=169,
    ClearCalibrationImages=170,
    ComputeCameraCalibration=171,
    TransferFile=172,
    SetCameraSettings=173,
    RequestRobotSettings=174,
  )

  _tags_by_value = dict()
  _tags_by_value[0] = 'UiDeviceConnectionWrongVersion'
  _tags_by_value[3] = 'MoveHead'
  _tags_by_value[4] = 'MoveLift'
  _tags_by_value[5] = 'DriveArc'
  _tags_by_value[6] = 'RobotHistoryRequest'
  _tags_by_value[8] = 'DisplayFaceImageRGBChunk'
  _tags_by_value[9] = 'AppIntent'
  _tags_by_value[10] = 'CancelFaceEnrollment'
  _tags_by_value[11] = 'RequestEnrolledNames'
  _tags_by_value[12] = 'UpdateEnrolledFaceByID'
  _tags_by_value[13] = 'EraseEnrolledFaceByID'
  _tags_by_value[14] = 'EraseAllEnrolledFaces'
  _tags_by_value[15] = 'SetFaceToEnroll'
  _tags_by_value[16] = 'EnableVisionMode'
  _tags_by_value[17] = 'RequestAvailableAnimations'
  _tags_by_value[18] = 'GotoPose'
  _tags_by_value[19] = 'DriveStraight'
  _tags_by_value[20] = 'TurnInPlace'
  _tags_by_value[21] = 'SetHeadAngle'
  _tags_by_value[22] = 'SetLiftHeight'
  _tags_by_value[24] = 'AlignWithObject'
  _tags_by_value[25] = 'SetLiftAngle'
  _tags_by_value[26] = 'DeleteCustomMarkerObjects'
  _tags_by_value[27] = 'DeleteFixedCustomObjects'
  _tags_by_value[28] = 'UndefineAllCustomMarkerObjects'
  _tags_by_value[29] = 'CreateFixedCustomObject'
  _tags_by_value[30] = 'DefineCustomBox'
  _tags_by_value[31] = 'DefineCustomCube'
  _tags_by_value[32] = 'DefineCustomWall'
  _tags_by_value[33] = 'SetMemoryMapBroadcastFrequency_sec'
  _tags_by_value[34] = 'PostAudioEvent'
  _tags_by_value[35] = 'StopAllAudioEvents'
  _tags_by_value[36] = 'PostAudioGameState'
  _tags_by_value[37] = 'PostAudioSwitchState'
  _tags_by_value[38] = 'PostAudioParameter'
  _tags_by_value[39] = 'PostAudioMusicState'
  _tags_by_value[40] = 'CalibrateMotors'
  _tags_by_value[41] = 'CliffAlignToWhite'
  _tags_by_value[42] = 'FlipBlock'
  _tags_by_value[43] = 'GotoObject'
  _tags_by_value[44] = 'MountCharger'
  _tags_by_value[45] = 'PanAndTilt'
  _tags_by_value[46] = 'PickupObject'
  _tags_by_value[47] = 'PlaceObjectOnGround'
  _tags_by_value[48] = 'PlaceObjectOnGroundHere'
  _tags_by_value[49] = 'PlaceOnObject'
  _tags_by_value[50] = 'PlaceRelObject'
  _tags_by_value[51] = 'PlayAnimation'
  _tags_by_value[52] = 'ListAnimations'
  _tags_by_value[53] = 'PlayAnimationGroup'
  _tags_by_value[54] = 'PlayAnimationTrigger'
  _tags_by_value[55] = 'PopAWheelie'
  _tags_by_value[56] = 'FacePlant'
  _tags_by_value[57] = 'RealignWithObject'
  _tags_by_value[58] = 'RollObject'
  _tags_by_value[59] = 'SayText'
  _tags_by_value[60] = 'SearchForNearbyObject'
  _tags_by_value[61] = 'TrackToFace'
  _tags_by_value[62] = 'TrackToObject'
  _tags_by_value[63] = 'TrackToLaserPoint'
  _tags_by_value[64] = 'TrackToPet'
  _tags_by_value[65] = 'TurnInPlaceAtSpeed'
  _tags_by_value[66] = 'TurnTowardsFace'
  _tags_by_value[67] = 'TurnTowardsImagePoint'
  _tags_by_value[68] = 'TurnTowardsLastFacePose'
  _tags_by_value[69] = 'TurnTowardsObject'
  _tags_by_value[70] = 'TurnTowardsPose'
  _tags_by_value[71] = 'VisuallyVerifyFace'
  _tags_by_value[72] = 'VisuallyVerifyObject'
  _tags_by_value[73] = 'VisuallyVerifyNoObjectAtPose'
  _tags_by_value[74] = 'Wait'
  _tags_by_value[75] = 'WaitForImages'
  _tags_by_value[76] = 'AdvertisementRegistrationMsg'
  _tags_by_value[77] = 'AdvertisementMsg'
  _tags_by_value[78] = 'Ping'
  _tags_by_value[79] = 'SetVizOrigin'
  _tags_by_value[80] = 'ImageChunk'
  _tags_by_value[81] = 'CameraCalibration'
  _tags_by_value[82] = 'IMURequest'
  _tags_by_value[83] = 'IMUTemperature'
  _tags_by_value[84] = 'StartControllerTestMode'
  _tags_by_value[85] = 'RawPWM'
  _tags_by_value[86] = 'SetConnectionStatus'
  _tags_by_value[87] = 'SendBLEConnectionStatus'
  _tags_by_value[88] = 'SetBLEPin'
  _tags_by_value[89] = 'WifiScanResponse'
  _tags_by_value[90] = 'WifiConnectResponse'
  _tags_by_value[91] = 'HasBleKeysResponse'
  _tags_by_value[92] = 'ActivateExperimentRequest'
  _tags_by_value[93] = 'ActivateExperimentResponse'
  _tags_by_value[94] = 'ConnectToUiDevice'
  _tags_by_value[95] = 'DisconnectFromUiDevice'
  _tags_by_value[96] = 'UserLoggedIn'
  _tags_by_value[97] = 'DriveWheels'
  _tags_by_value[98] = 'EnableLiftPower'
  _tags_by_value[99] = 'EnableCliffSensor'
  _tags_by_value[100] = 'EnableStopOnCliff'
  _tags_by_value[101] = 'StopAllMotors'
  _tags_by_value[102] = 'ControllerGains'
  _tags_by_value[103] = 'RollActionParams'
  _tags_by_value[104] = 'SetMotionModelParams'
  _tags_by_value[105] = 'SetRobotVolume'
  _tags_by_value[106] = 'ForceDelocalizeRobot'
  _tags_by_value[107] = 'CancelAction'
  _tags_by_value[108] = 'CancelActionByIdTag'
  _tags_by_value[109] = 'QueueSingleAction'
  _tags_by_value[110] = 'QueueCompoundAction'
  _tags_by_value[111] = 'RedirectViz'
  _tags_by_value[112] = 'ImageRequest'
  _tags_by_value[113] = 'SaveImages'
  _tags_by_value[114] = 'EnableColorImages'
  _tags_by_value[115] = 'SaveRobotState'
  _tags_by_value[116] = 'EnableDisplay'
  _tags_by_value[117] = 'ExecuteTestPlan'
  _tags_by_value[118] = 'SelectNextObject'
  _tags_by_value[119] = 'SetRobotCarryingObject'
  _tags_by_value[120] = 'DeleteAllCustomObjects'
  _tags_by_value[121] = 'VisionWhileMoving'
  _tags_by_value[122] = 'VisionRunMode'
  _tags_by_value[123] = 'SaveFaceAlbumToFile'
  _tags_by_value[124] = 'LoadFaceAlbumFromFile'
  _tags_by_value[125] = 'SetCameraCaptureFormat'
  _tags_by_value[126] = 'SetMemoryMapRenderEnabled'
  _tags_by_value[127] = 'FakeTriggerWordDetected'
  _tags_by_value[128] = 'FakeCloudIntent'
  _tags_by_value[129] = 'FakeUserIntent'
  _tags_by_value[130] = 'ExecuteBehaviorByID'
  _tags_by_value[131] = 'SetLiftLoadTestAsActivatable'
  _tags_by_value[132] = 'AbortPath'
  _tags_by_value[133] = 'AbortAll'
  _tags_by_value[134] = 'StartTestMode'
  _tags_by_value[135] = 'DrawPoseMarker'
  _tags_by_value[136] = 'ErasePoseMarker'
  _tags_by_value[137] = 'VisualizeQuad'
  _tags_by_value[138] = 'EraseQuad'
  _tags_by_value[139] = 'ReadAnimationFile'
  _tags_by_value[140] = 'RequestAvailableAnimationGroups'
  _tags_by_value[141] = 'PushDrivingAnimations'
  _tags_by_value[142] = 'RemoveDrivingAnimations'
  _tags_by_value[143] = 'DisplayProceduralFace'
  _tags_by_value[144] = 'SetFaceHue'
  _tags_by_value[145] = 'DisplayFaceImageBinaryChunk'
  _tags_by_value[146] = 'SetActiveObjectLEDs'
  _tags_by_value[147] = 'SetAllActiveObjectLEDs'
  _tags_by_value[148] = 'SetBackpackLEDs'
  _tags_by_value[149] = 'EnableLightStates'
  _tags_by_value[150] = 'PlayCubeAnim'
  _tags_by_value[151] = 'StopCubeAnim'
  _tags_by_value[152] = 'SetOnboardingStage'
  _tags_by_value[153] = 'MoodMessage'
  _tags_by_value[154] = 'SetDebugConsoleVarMessage'
  _tags_by_value[155] = 'SetAnimDebugConsoleVarMessage'
  _tags_by_value[156] = 'RunDebugConsoleFuncMessage'
  _tags_by_value[157] = 'RunAnimDebugConsoleFuncMessage'
  _tags_by_value[158] = 'GetDebugConsoleVarMessage'
  _tags_by_value[159] = 'GetAllDebugConsoleVarMessage'
  _tags_by_value[160] = 'GetJsonDasLogsMessage'
  _tags_by_value[161] = 'SetEnableSpeedChooser'
  _tags_by_value[162] = 'LogRawCliffData'
  _tags_by_value[163] = 'LogRawProxData'
  _tags_by_value[164] = 'ConnectToCube'
  _tags_by_value[165] = 'DisconnectFromCube'
  _tags_by_value[166] = 'ForgetPreferredCube'
  _tags_by_value[167] = 'SetPreferredCube'
  _tags_by_value[168] = 'SendAvailableObjects'
  _tags_by_value[169] = 'SaveCalibrationImage'
  _tags_by_value[170] = 'ClearCalibrationImages'
  _tags_by_value[171] = 'ComputeCameraCalibration'
  _tags_by_value[172] = 'TransferFile'
  _tags_by_value[173] = 'SetCameraSettings'
  _tags_by_value[174] = 'RequestRobotSettings'
  

  _tag_unpack_methods = dict()
  _tag_unpack_methods[0] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.UiDeviceConnectionWrongVersion.unpack_from)
  _tag_unpack_methods[3] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.MoveHead.unpack_from)
  _tag_unpack_methods[4] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.MoveLift.unpack_from)
  _tag_unpack_methods[5] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.DriveArc.unpack_from)
  _tag_unpack_methods[6] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotHistoryRequest.unpack_from)
  _tag_unpack_methods[8] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.DisplayFaceImageRGBChunk.unpack_from)
  _tag_unpack_methods[9] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.AppIntent.unpack_from)
  _tag_unpack_methods[10] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.CancelFaceEnrollment.unpack_from)
  _tag_unpack_methods[11] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RequestEnrolledNames.unpack_from)
  _tag_unpack_methods[12] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.UpdateEnrolledFaceByID.unpack_from)
  _tag_unpack_methods[13] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.EraseEnrolledFaceByID.unpack_from)
  _tag_unpack_methods[14] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.EraseAllEnrolledFaces.unpack_from)
  _tag_unpack_methods[15] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetFaceToEnroll.unpack_from)
  _tag_unpack_methods[16] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.EnableVisionMode.unpack_from)
  _tag_unpack_methods[17] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RequestAvailableAnimations.unpack_from)
  _tag_unpack_methods[18] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.GotoPose.unpack_from)
  _tag_unpack_methods[19] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.DriveStraight.unpack_from)
  _tag_unpack_methods[20] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.TurnInPlace.unpack_from)
  _tag_unpack_methods[21] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetHeadAngle.unpack_from)
  _tag_unpack_methods[22] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetLiftHeight.unpack_from)
  _tag_unpack_methods[24] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.AlignWithObject.unpack_from)
  _tag_unpack_methods[25] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetLiftAngle.unpack_from)
  _tag_unpack_methods[26] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.DeleteCustomMarkerObjects.unpack_from)
  _tag_unpack_methods[27] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.DeleteFixedCustomObjects.unpack_from)
  _tag_unpack_methods[28] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.UndefineAllCustomMarkerObjects.unpack_from)
  _tag_unpack_methods[29] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.CreateFixedCustomObject.unpack_from)
  _tag_unpack_methods[30] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.DefineCustomBox.unpack_from)
  _tag_unpack_methods[31] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.DefineCustomCube.unpack_from)
  _tag_unpack_methods[32] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.DefineCustomWall.unpack_from)
  _tag_unpack_methods[33] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetMemoryMapBroadcastFrequency_sec.unpack_from)
  _tag_unpack_methods[34] = lambda reader: reader.read_object(Anki.AudioEngine.Multiplexer.PostAudioEvent.unpack_from)
  _tag_unpack_methods[35] = lambda reader: reader.read_object(Anki.AudioEngine.Multiplexer.StopAllAudioEvents.unpack_from)
  _tag_unpack_methods[36] = lambda reader: reader.read_object(Anki.AudioEngine.Multiplexer.PostAudioGameState.unpack_from)
  _tag_unpack_methods[37] = lambda reader: reader.read_object(Anki.AudioEngine.Multiplexer.PostAudioSwitchState.unpack_from)
  _tag_unpack_methods[38] = lambda reader: reader.read_object(Anki.AudioEngine.Multiplexer.PostAudioParameter.unpack_from)
  _tag_unpack_methods[39] = lambda reader: reader.read_object(Anki.AudioEngine.Multiplexer.PostAudioMusicState.unpack_from)
  _tag_unpack_methods[40] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.CalibrateMotors.unpack_from)
  _tag_unpack_methods[41] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.CliffAlignToWhite.unpack_from)
  _tag_unpack_methods[42] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.FlipBlock.unpack_from)
  _tag_unpack_methods[43] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.GotoObject.unpack_from)
  _tag_unpack_methods[44] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.MountCharger.unpack_from)
  _tag_unpack_methods[45] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.PanAndTilt.unpack_from)
  _tag_unpack_methods[46] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.PickupObject.unpack_from)
  _tag_unpack_methods[47] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.PlaceObjectOnGround.unpack_from)
  _tag_unpack_methods[48] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.PlaceObjectOnGroundHere.unpack_from)
  _tag_unpack_methods[49] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.PlaceOnObject.unpack_from)
  _tag_unpack_methods[50] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.PlaceRelObject.unpack_from)
  _tag_unpack_methods[51] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.PlayAnimation.unpack_from)
  _tag_unpack_methods[52] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ListAnimations.unpack_from)
  _tag_unpack_methods[53] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.PlayAnimationGroup.unpack_from)
  _tag_unpack_methods[54] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.PlayAnimationTrigger.unpack_from)
  _tag_unpack_methods[55] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.PopAWheelie.unpack_from)
  _tag_unpack_methods[56] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.FacePlant.unpack_from)
  _tag_unpack_methods[57] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RealignWithObject.unpack_from)
  _tag_unpack_methods[58] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RollObject.unpack_from)
  _tag_unpack_methods[59] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SayText.unpack_from)
  _tag_unpack_methods[60] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SearchForNearbyObject.unpack_from)
  _tag_unpack_methods[61] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.TrackToFace.unpack_from)
  _tag_unpack_methods[62] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.TrackToObject.unpack_from)
  _tag_unpack_methods[63] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.TrackToLaserPoint.unpack_from)
  _tag_unpack_methods[64] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.TrackToPet.unpack_from)
  _tag_unpack_methods[65] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.TurnInPlaceAtSpeed.unpack_from)
  _tag_unpack_methods[66] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.TurnTowardsFace.unpack_from)
  _tag_unpack_methods[67] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.TurnTowardsImagePoint.unpack_from)
  _tag_unpack_methods[68] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.TurnTowardsLastFacePose.unpack_from)
  _tag_unpack_methods[69] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.TurnTowardsObject.unpack_from)
  _tag_unpack_methods[70] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.TurnTowardsPose.unpack_from)
  _tag_unpack_methods[71] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.VisuallyVerifyFace.unpack_from)
  _tag_unpack_methods[72] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.VisuallyVerifyObject.unpack_from)
  _tag_unpack_methods[73] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.VisuallyVerifyNoObjectAtPose.unpack_from)
  _tag_unpack_methods[74] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.Wait.unpack_from)
  _tag_unpack_methods[75] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.WaitForImages.unpack_from)
  _tag_unpack_methods[76] = lambda reader: reader.read_object(Anki.Vector.AdvertisementRegistrationMsg.unpack_from)
  _tag_unpack_methods[77] = lambda reader: reader.read_object(Anki.Vector.AdvertisementMsg.unpack_from)
  _tag_unpack_methods[78] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.Ping.unpack_from)
  _tag_unpack_methods[79] = lambda reader: reader.read_object(Anki.Vector.SetVizOrigin.unpack_from)
  _tag_unpack_methods[80] = lambda reader: reader.read_object(Anki.Vector.ImageChunk.unpack_from)
  _tag_unpack_methods[81] = lambda reader: reader.read_object(Anki.Vector.CameraCalibration.unpack_from)
  _tag_unpack_methods[82] = lambda reader: reader.read_object(Anki.Vector.IMURequest.unpack_from)
  _tag_unpack_methods[83] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.IMUTemperature.unpack_from)
  _tag_unpack_methods[84] = lambda reader: reader.read_object(Anki.Vector.StartControllerTestMode.unpack_from)
  _tag_unpack_methods[85] = lambda reader: reader.read_object(Anki.Vector.RawPWM.unpack_from)
  _tag_unpack_methods[86] = lambda reader: reader.read_object(Anki.Vector.SwitchboardInterface.SetConnectionStatus.unpack_from)
  _tag_unpack_methods[87] = lambda reader: reader.read_object(Anki.Vector.SwitchboardInterface.SendBLEConnectionStatus.unpack_from)
  _tag_unpack_methods[88] = lambda reader: reader.read_object(Anki.Vector.SwitchboardInterface.SetBLEPin.unpack_from)
  _tag_unpack_methods[89] = lambda reader: reader.read_object(Anki.Vector.SwitchboardInterface.WifiScanResponse.unpack_from)
  _tag_unpack_methods[90] = lambda reader: reader.read_object(Anki.Vector.SwitchboardInterface.WifiConnectResponse.unpack_from)
  _tag_unpack_methods[91] = lambda reader: reader.read_object(Anki.Vector.SwitchboardInterface.HasBleKeysResponse.unpack_from)
  _tag_unpack_methods[92] = lambda reader: reader.read_object(Anki.Util.AnkiLab.ActivateExperimentRequest.unpack_from)
  _tag_unpack_methods[93] = lambda reader: reader.read_object(Anki.Util.AnkiLab.ActivateExperimentResponse.unpack_from)
  _tag_unpack_methods[94] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ConnectToUiDevice.unpack_from)
  _tag_unpack_methods[95] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.DisconnectFromUiDevice.unpack_from)
  _tag_unpack_methods[96] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.UserLoggedIn.unpack_from)
  _tag_unpack_methods[97] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.DriveWheels.unpack_from)
  _tag_unpack_methods[98] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.EnableLiftPower.unpack_from)
  _tag_unpack_methods[99] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.EnableCliffSensor.unpack_from)
  _tag_unpack_methods[100] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.EnableStopOnCliff.unpack_from)
  _tag_unpack_methods[101] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.StopAllMotors.unpack_from)
  _tag_unpack_methods[102] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ControllerGains.unpack_from)
  _tag_unpack_methods[103] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RollActionParams.unpack_from)
  _tag_unpack_methods[104] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetMotionModelParams.unpack_from)
  _tag_unpack_methods[105] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetRobotVolume.unpack_from)
  _tag_unpack_methods[106] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ForceDelocalizeRobot.unpack_from)
  _tag_unpack_methods[107] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.CancelAction.unpack_from)
  _tag_unpack_methods[108] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.CancelActionByIdTag.unpack_from)
  _tag_unpack_methods[109] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.QueueSingleAction.unpack_from)
  _tag_unpack_methods[110] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.QueueCompoundAction.unpack_from)
  _tag_unpack_methods[111] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RedirectViz.unpack_from)
  _tag_unpack_methods[112] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ImageRequest.unpack_from)
  _tag_unpack_methods[113] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SaveImages.unpack_from)
  _tag_unpack_methods[114] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.EnableColorImages.unpack_from)
  _tag_unpack_methods[115] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SaveRobotState.unpack_from)
  _tag_unpack_methods[116] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.EnableDisplay.unpack_from)
  _tag_unpack_methods[117] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ExecuteTestPlan.unpack_from)
  _tag_unpack_methods[118] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SelectNextObject.unpack_from)
  _tag_unpack_methods[119] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetRobotCarryingObject.unpack_from)
  _tag_unpack_methods[120] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.DeleteAllCustomObjects.unpack_from)
  _tag_unpack_methods[121] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.VisionWhileMoving.unpack_from)
  _tag_unpack_methods[122] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.VisionRunMode.unpack_from)
  _tag_unpack_methods[123] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SaveFaceAlbumToFile.unpack_from)
  _tag_unpack_methods[124] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.LoadFaceAlbumFromFile.unpack_from)
  _tag_unpack_methods[125] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetCameraCaptureFormat.unpack_from)
  _tag_unpack_methods[126] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetMemoryMapRenderEnabled.unpack_from)
  _tag_unpack_methods[127] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.FakeTriggerWordDetected.unpack_from)
  _tag_unpack_methods[128] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.FakeCloudIntent.unpack_from)
  _tag_unpack_methods[129] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.FakeUserIntent.unpack_from)
  _tag_unpack_methods[130] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ExecuteBehaviorByID.unpack_from)
  _tag_unpack_methods[131] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetLiftLoadTestAsActivatable.unpack_from)
  _tag_unpack_methods[132] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.AbortPath.unpack_from)
  _tag_unpack_methods[133] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.AbortAll.unpack_from)
  _tag_unpack_methods[134] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.StartTestMode.unpack_from)
  _tag_unpack_methods[135] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.DrawPoseMarker.unpack_from)
  _tag_unpack_methods[136] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ErasePoseMarker.unpack_from)
  _tag_unpack_methods[137] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.VisualizeQuad.unpack_from)
  _tag_unpack_methods[138] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.EraseQuad.unpack_from)
  _tag_unpack_methods[139] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ReadAnimationFile.unpack_from)
  _tag_unpack_methods[140] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RequestAvailableAnimationGroups.unpack_from)
  _tag_unpack_methods[141] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.PushDrivingAnimations.unpack_from)
  _tag_unpack_methods[142] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RemoveDrivingAnimations.unpack_from)
  _tag_unpack_methods[143] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.DisplayProceduralFace.unpack_from)
  _tag_unpack_methods[144] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetFaceHue.unpack_from)
  _tag_unpack_methods[145] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.DisplayFaceImageBinaryChunk.unpack_from)
  _tag_unpack_methods[146] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetActiveObjectLEDs.unpack_from)
  _tag_unpack_methods[147] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetAllActiveObjectLEDs.unpack_from)
  _tag_unpack_methods[148] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetBackpackLEDs.unpack_from)
  _tag_unpack_methods[149] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.EnableLightStates.unpack_from)
  _tag_unpack_methods[150] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.PlayCubeAnim.unpack_from)
  _tag_unpack_methods[151] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.StopCubeAnim.unpack_from)
  _tag_unpack_methods[152] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetOnboardingStage.unpack_from)
  _tag_unpack_methods[153] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.MoodMessage.unpack_from)
  _tag_unpack_methods[154] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetDebugConsoleVarMessage.unpack_from)
  _tag_unpack_methods[155] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetAnimDebugConsoleVarMessage.unpack_from)
  _tag_unpack_methods[156] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RunDebugConsoleFuncMessage.unpack_from)
  _tag_unpack_methods[157] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RunAnimDebugConsoleFuncMessage.unpack_from)
  _tag_unpack_methods[158] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.GetDebugConsoleVarMessage.unpack_from)
  _tag_unpack_methods[159] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.GetAllDebugConsoleVarMessage.unpack_from)
  _tag_unpack_methods[160] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.GetJsonDasLogsMessage.unpack_from)
  _tag_unpack_methods[161] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetEnableSpeedChooser.unpack_from)
  _tag_unpack_methods[162] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.LogRawCliffData.unpack_from)
  _tag_unpack_methods[163] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.LogRawProxData.unpack_from)
  _tag_unpack_methods[164] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ConnectToCube.unpack_from)
  _tag_unpack_methods[165] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.DisconnectFromCube.unpack_from)
  _tag_unpack_methods[166] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ForgetPreferredCube.unpack_from)
  _tag_unpack_methods[167] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetPreferredCube.unpack_from)
  _tag_unpack_methods[168] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SendAvailableObjects.unpack_from)
  _tag_unpack_methods[169] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SaveCalibrationImage.unpack_from)
  _tag_unpack_methods[170] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ClearCalibrationImages.unpack_from)
  _tag_unpack_methods[171] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ComputeCameraCalibration.unpack_from)
  _tag_unpack_methods[172] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.TransferFile.unpack_from)
  _tag_unpack_methods[173] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SetCameraSettings.unpack_from)
  _tag_unpack_methods[174] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RequestRobotSettings.unpack_from)
  

  _tag_pack_methods = dict()
  _tag_pack_methods[0] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[3] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[4] = 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[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[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_pack_methods[104] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[105] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[106] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[107] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[108] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[109] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[110] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[111] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[112] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[113] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[114] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[115] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[116] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[117] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[118] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[119] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[120] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[121] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[122] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[123] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[124] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[125] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[126] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[127] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[128] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[129] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[130] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[131] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[132] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[133] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[134] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[135] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[136] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[137] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[138] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[139] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[140] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[141] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[142] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[143] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[144] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[145] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[146] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[147] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[148] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[149] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[150] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[151] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[152] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[153] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[154] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[155] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[156] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[157] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[158] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[159] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[160] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[161] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[162] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[163] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[164] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[165] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[166] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[167] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[168] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[169] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[170] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[171] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[172] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[173] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[174] = lambda writer, value: writer.write_object(value)
  

  _tag_size_methods = dict()
  _tag_size_methods[0] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[3] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[4] = 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[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[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)
  _tag_size_methods[104] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[105] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[106] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[107] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[108] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[109] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[110] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[111] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[112] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[113] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[114] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[115] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[116] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[117] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[118] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[119] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[120] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[121] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[122] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[123] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[124] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[125] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[126] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[127] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[128] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[129] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[130] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[131] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[132] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[133] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[134] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[135] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[136] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[137] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[138] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[139] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[140] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[141] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[142] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[143] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[144] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[145] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[146] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[147] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[148] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[149] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[150] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[151] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[152] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[153] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[154] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[155] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[156] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[157] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[158] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[159] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[160] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[161] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[162] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[163] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[164] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[165] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[166] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[167] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[168] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[169] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[170] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[171] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[172] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[173] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[174] = lambda value: msgbuffers.size_object(value)
  

  _type_by_tag_value = dict()
  _type_by_tag_value[0] = lambda : Anki.Vector.ExternalInterface.UiDeviceConnectionWrongVersion
  _type_by_tag_value[3] = lambda : Anki.Vector.ExternalInterface.MoveHead
  _type_by_tag_value[4] = lambda : Anki.Vector.ExternalInterface.MoveLift
  _type_by_tag_value[5] = lambda : Anki.Vector.ExternalInterface.DriveArc
  _type_by_tag_value[6] = lambda : Anki.Vector.ExternalInterface.RobotHistoryRequest
  _type_by_tag_value[8] = lambda : Anki.Vector.ExternalInterface.DisplayFaceImageRGBChunk
  _type_by_tag_value[9] = lambda : Anki.Vector.ExternalInterface.AppIntent
  _type_by_tag_value[10] = lambda : Anki.Vector.ExternalInterface.CancelFaceEnrollment
  _type_by_tag_value[11] = lambda : Anki.Vector.ExternalInterface.RequestEnrolledNames
  _type_by_tag_value[12] = lambda : Anki.Vector.ExternalInterface.UpdateEnrolledFaceByID
  _type_by_tag_value[13] = lambda : Anki.Vector.ExternalInterface.EraseEnrolledFaceByID
  _type_by_tag_value[14] = lambda : Anki.Vector.ExternalInterface.EraseAllEnrolledFaces
  _type_by_tag_value[15] = lambda : Anki.Vector.ExternalInterface.SetFaceToEnroll
  _type_by_tag_value[16] = lambda : Anki.Vector.ExternalInterface.EnableVisionMode
  _type_by_tag_value[17] = lambda : Anki.Vector.ExternalInterface.RequestAvailableAnimations
  _type_by_tag_value[18] = lambda : Anki.Vector.ExternalInterface.GotoPose
  _type_by_tag_value[19] = lambda : Anki.Vector.ExternalInterface.DriveStraight
  _type_by_tag_value[20] = lambda : Anki.Vector.ExternalInterface.TurnInPlace
  _type_by_tag_value[21] = lambda : Anki.Vector.ExternalInterface.SetHeadAngle
  _type_by_tag_value[22] = lambda : Anki.Vector.ExternalInterface.SetLiftHeight
  _type_by_tag_value[24] = lambda : Anki.Vector.ExternalInterface.AlignWithObject
  _type_by_tag_value[25] = lambda : Anki.Vector.ExternalInterface.SetLiftAngle
  _type_by_tag_value[26] = lambda : Anki.Vector.ExternalInterface.DeleteCustomMarkerObjects
  _type_by_tag_value[27] = lambda : Anki.Vector.ExternalInterface.DeleteFixedCustomObjects
  _type_by_tag_value[28] = lambda : Anki.Vector.ExternalInterface.UndefineAllCustomMarkerObjects
  _type_by_tag_value[29] = lambda : Anki.Vector.ExternalInterface.CreateFixedCustomObject
  _type_by_tag_value[30] = lambda : Anki.Vector.ExternalInterface.DefineCustomBox
  _type_by_tag_value[31] = lambda : Anki.Vector.ExternalInterface.DefineCustomCube
  _type_by_tag_value[32] = lambda : Anki.Vector.ExternalInterface.DefineCustomWall
  _type_by_tag_value[33] = lambda : Anki.Vector.ExternalInterface.SetMemoryMapBroadcastFrequency_sec
  _type_by_tag_value[34] = lambda : Anki.AudioEngine.Multiplexer.PostAudioEvent
  _type_by_tag_value[35] = lambda : Anki.AudioEngine.Multiplexer.StopAllAudioEvents
  _type_by_tag_value[36] = lambda : Anki.AudioEngine.Multiplexer.PostAudioGameState
  _type_by_tag_value[37] = lambda : Anki.AudioEngine.Multiplexer.PostAudioSwitchState
  _type_by_tag_value[38] = lambda : Anki.AudioEngine.Multiplexer.PostAudioParameter
  _type_by_tag_value[39] = lambda : Anki.AudioEngine.Multiplexer.PostAudioMusicState
  _type_by_tag_value[40] = lambda : Anki.Vector.ExternalInterface.CalibrateMotors
  _type_by_tag_value[41] = lambda : Anki.Vector.ExternalInterface.CliffAlignToWhite
  _type_by_tag_value[42] = lambda : Anki.Vector.ExternalInterface.FlipBlock
  _type_by_tag_value[43] = lambda : Anki.Vector.ExternalInterface.GotoObject
  _type_by_tag_value[44] = lambda : Anki.Vector.ExternalInterface.MountCharger
  _type_by_tag_value[45] = lambda : Anki.Vector.ExternalInterface.PanAndTilt
  _type_by_tag_value[46] = lambda : Anki.Vector.ExternalInterface.PickupObject
  _type_by_tag_value[47] = lambda : Anki.Vector.ExternalInterface.PlaceObjectOnGround
  _type_by_tag_value[48] = lambda : Anki.Vector.ExternalInterface.PlaceObjectOnGroundHere
  _type_by_tag_value[49] = lambda : Anki.Vector.ExternalInterface.PlaceOnObject
  _type_by_tag_value[50] = lambda : Anki.Vector.ExternalInterface.PlaceRelObject
  _type_by_tag_value[51] = lambda : Anki.Vector.ExternalInterface.PlayAnimation
  _type_by_tag_value[52] = lambda : Anki.Vector.ExternalInterface.ListAnimations
  _type_by_tag_value[53] = lambda : Anki.Vector.ExternalInterface.PlayAnimationGroup
  _type_by_tag_value[54] = lambda : Anki.Vector.ExternalInterface.PlayAnimationTrigger
  _type_by_tag_value[55] = lambda : Anki.Vector.ExternalInterface.PopAWheelie
  _type_by_tag_value[56] = lambda : Anki.Vector.ExternalInterface.FacePlant
  _type_by_tag_value[57] = lambda : Anki.Vector.ExternalInterface.RealignWithObject
  _type_by_tag_value[58] = lambda : Anki.Vector.ExternalInterface.RollObject
  _type_by_tag_value[59] = lambda : Anki.Vector.ExternalInterface.SayText
  _type_by_tag_value[60] = lambda : Anki.Vector.ExternalInterface.SearchForNearbyObject
  _type_by_tag_value[61] = lambda : Anki.Vector.ExternalInterface.TrackToFace
  _type_by_tag_value[62] = lambda : Anki.Vector.ExternalInterface.TrackToObject
  _type_by_tag_value[63] = lambda : Anki.Vector.ExternalInterface.TrackToLaserPoint
  _type_by_tag_value[64] = lambda : Anki.Vector.ExternalInterface.TrackToPet
  _type_by_tag_value[65] = lambda : Anki.Vector.ExternalInterface.TurnInPlaceAtSpeed
  _type_by_tag_value[66] = lambda : Anki.Vector.ExternalInterface.TurnTowardsFace
  _type_by_tag_value[67] = lambda : Anki.Vector.ExternalInterface.TurnTowardsImagePoint
  _type_by_tag_value[68] = lambda : Anki.Vector.ExternalInterface.TurnTowardsLastFacePose
  _type_by_tag_value[69] = lambda : Anki.Vector.ExternalInterface.TurnTowardsObject
  _type_by_tag_value[70] = lambda : Anki.Vector.ExternalInterface.TurnTowardsPose
  _type_by_tag_value[71] = lambda : Anki.Vector.ExternalInterface.VisuallyVerifyFace
  _type_by_tag_value[72] = lambda : Anki.Vector.ExternalInterface.VisuallyVerifyObject
  _type_by_tag_value[73] = lambda : Anki.Vector.ExternalInterface.VisuallyVerifyNoObjectAtPose
  _type_by_tag_value[74] = lambda : Anki.Vector.ExternalInterface.Wait
  _type_by_tag_value[75] = lambda : Anki.Vector.ExternalInterface.WaitForImages
  _type_by_tag_value[76] = lambda : Anki.Vector.AdvertisementRegistrationMsg
  _type_by_tag_value[77] = lambda : Anki.Vector.AdvertisementMsg
  _type_by_tag_value[78] = lambda : Anki.Vector.ExternalInterface.Ping
  _type_by_tag_value[79] = lambda : Anki.Vector.SetVizOrigin
  _type_by_tag_value[80] = lambda : Anki.Vector.ImageChunk
  _type_by_tag_value[81] = lambda : Anki.Vector.CameraCalibration
  _type_by_tag_value[82] = lambda : Anki.Vector.IMURequest
  _type_by_tag_value[83] = lambda : Anki.Vector.RobotInterface.IMUTemperature
  _type_by_tag_value[84] = lambda : Anki.Vector.StartControllerTestMode
  _type_by_tag_value[85] = lambda : Anki.Vector.RawPWM
  _type_by_tag_value[86] = lambda : Anki.Vector.SwitchboardInterface.SetConnectionStatus
  _type_by_tag_value[87] = lambda : Anki.Vector.SwitchboardInterface.SendBLEConnectionStatus
  _type_by_tag_value[88] = lambda : Anki.Vector.SwitchboardInterface.SetBLEPin
  _type_by_tag_value[89] = lambda : Anki.Vector.SwitchboardInterface.WifiScanResponse
  _type_by_tag_value[90] = lambda : Anki.Vector.SwitchboardInterface.WifiConnectResponse
  _type_by_tag_value[91] = lambda : Anki.Vector.SwitchboardInterface.HasBleKeysResponse
  _type_by_tag_value[92] = lambda : Anki.Util.AnkiLab.ActivateExperimentRequest
  _type_by_tag_value[93] = lambda : Anki.Util.AnkiLab.ActivateExperimentResponse
  _type_by_tag_value[94] = lambda : Anki.Vector.ExternalInterface.ConnectToUiDevice
  _type_by_tag_value[95] = lambda : Anki.Vector.ExternalInterface.DisconnectFromUiDevice
  _type_by_tag_value[96] = lambda : Anki.Vector.ExternalInterface.UserLoggedIn
  _type_by_tag_value[97] = lambda : Anki.Vector.ExternalInterface.DriveWheels
  _type_by_tag_value[98] = lambda : Anki.Vector.ExternalInterface.EnableLiftPower
  _type_by_tag_value[99] = lambda : Anki.Vector.ExternalInterface.EnableCliffSensor
  _type_by_tag_value[100] = lambda : Anki.Vector.ExternalInterface.EnableStopOnCliff
  _type_by_tag_value[101] = lambda : Anki.Vector.ExternalInterface.StopAllMotors
  _type_by_tag_value[102] = lambda : Anki.Vector.ExternalInterface.ControllerGains
  _type_by_tag_value[103] = lambda : Anki.Vector.ExternalInterface.RollActionParams
  _type_by_tag_value[104] = lambda : Anki.Vector.ExternalInterface.SetMotionModelParams
  _type_by_tag_value[105] = lambda : Anki.Vector.ExternalInterface.SetRobotVolume
  _type_by_tag_value[106] = lambda : Anki.Vector.ExternalInterface.ForceDelocalizeRobot
  _type_by_tag_value[107] = lambda : Anki.Vector.ExternalInterface.CancelAction
  _type_by_tag_value[108] = lambda : Anki.Vector.ExternalInterface.CancelActionByIdTag
  _type_by_tag_value[109] = lambda : Anki.Vector.ExternalInterface.QueueSingleAction
  _type_by_tag_value[110] = lambda : Anki.Vector.ExternalInterface.QueueCompoundAction
  _type_by_tag_value[111] = lambda : Anki.Vector.ExternalInterface.RedirectViz
  _type_by_tag_value[112] = lambda : Anki.Vector.ExternalInterface.ImageRequest
  _type_by_tag_value[113] = lambda : Anki.Vector.ExternalInterface.SaveImages
  _type_by_tag_value[114] = lambda : Anki.Vector.ExternalInterface.EnableColorImages
  _type_by_tag_value[115] = lambda : Anki.Vector.ExternalInterface.SaveRobotState
  _type_by_tag_value[116] = lambda : Anki.Vector.ExternalInterface.EnableDisplay
  _type_by_tag_value[117] = lambda : Anki.Vector.ExternalInterface.ExecuteTestPlan
  _type_by_tag_value[118] = lambda : Anki.Vector.ExternalInterface.SelectNextObject
  _type_by_tag_value[119] = lambda : Anki.Vector.ExternalInterface.SetRobotCarryingObject
  _type_by_tag_value[120] = lambda : Anki.Vector.ExternalInterface.DeleteAllCustomObjects
  _type_by_tag_value[121] = lambda : Anki.Vector.ExternalInterface.VisionWhileMoving
  _type_by_tag_value[122] = lambda : Anki.Vector.ExternalInterface.VisionRunMode
  _type_by_tag_value[123] = lambda : Anki.Vector.ExternalInterface.SaveFaceAlbumToFile
  _type_by_tag_value[124] = lambda : Anki.Vector.ExternalInterface.LoadFaceAlbumFromFile
  _type_by_tag_value[125] = lambda : Anki.Vector.ExternalInterface.SetCameraCaptureFormat
  _type_by_tag_value[126] = lambda : Anki.Vector.ExternalInterface.SetMemoryMapRenderEnabled
  _type_by_tag_value[127] = lambda : Anki.Vector.ExternalInterface.FakeTriggerWordDetected
  _type_by_tag_value[128] = lambda : Anki.Vector.ExternalInterface.FakeCloudIntent
  _type_by_tag_value[129] = lambda : Anki.Vector.ExternalInterface.FakeUserIntent
  _type_by_tag_value[130] = lambda : Anki.Vector.ExternalInterface.ExecuteBehaviorByID
  _type_by_tag_value[131] = lambda : Anki.Vector.ExternalInterface.SetLiftLoadTestAsActivatable
  _type_by_tag_value[132] = lambda : Anki.Vector.ExternalInterface.AbortPath
  _type_by_tag_value[133] = lambda : Anki.Vector.ExternalInterface.AbortAll
  _type_by_tag_value[134] = lambda : Anki.Vector.ExternalInterface.StartTestMode
  _type_by_tag_value[135] = lambda : Anki.Vector.ExternalInterface.DrawPoseMarker
  _type_by_tag_value[136] = lambda : Anki.Vector.ExternalInterface.ErasePoseMarker
  _type_by_tag_value[137] = lambda : Anki.Vector.ExternalInterface.VisualizeQuad
  _type_by_tag_value[138] = lambda : Anki.Vector.ExternalInterface.EraseQuad
  _type_by_tag_value[139] = lambda : Anki.Vector.ExternalInterface.ReadAnimationFile
  _type_by_tag_value[140] = lambda : Anki.Vector.ExternalInterface.RequestAvailableAnimationGroups
  _type_by_tag_value[141] = lambda : Anki.Vector.ExternalInterface.PushDrivingAnimations
  _type_by_tag_value[142] = lambda : Anki.Vector.ExternalInterface.RemoveDrivingAnimations
  _type_by_tag_value[143] = lambda : Anki.Vector.ExternalInterface.DisplayProceduralFace
  _type_by_tag_value[144] = lambda : Anki.Vector.ExternalInterface.SetFaceHue
  _type_by_tag_value[145] = lambda : Anki.Vector.ExternalInterface.DisplayFaceImageBinaryChunk
  _type_by_tag_value[146] = lambda : Anki.Vector.ExternalInterface.SetActiveObjectLEDs
  _type_by_tag_value[147] = lambda : Anki.Vector.ExternalInterface.SetAllActiveObjectLEDs
  _type_by_tag_value[148] = lambda : Anki.Vector.ExternalInterface.SetBackpackLEDs
  _type_by_tag_value[149] = lambda : Anki.Vector.ExternalInterface.EnableLightStates
  _type_by_tag_value[150] = lambda : Anki.Vector.ExternalInterface.PlayCubeAnim
  _type_by_tag_value[151] = lambda : Anki.Vector.ExternalInterface.StopCubeAnim
  _type_by_tag_value[152] = lambda : Anki.Vector.ExternalInterface.SetOnboardingStage
  _type_by_tag_value[153] = lambda : Anki.Vector.ExternalInterface.MoodMessage
  _type_by_tag_value[154] = lambda : Anki.Vector.ExternalInterface.SetDebugConsoleVarMessage
  _type_by_tag_value[155] = lambda : Anki.Vector.ExternalInterface.SetAnimDebugConsoleVarMessage
  _type_by_tag_value[156] = lambda : Anki.Vector.ExternalInterface.RunDebugConsoleFuncMessage
  _type_by_tag_value[157] = lambda : Anki.Vector.ExternalInterface.RunAnimDebugConsoleFuncMessage
  _type_by_tag_value[158] = lambda : Anki.Vector.ExternalInterface.GetDebugConsoleVarMessage
  _type_by_tag_value[159] = lambda : Anki.Vector.ExternalInterface.GetAllDebugConsoleVarMessage
  _type_by_tag_value[160] = lambda : Anki.Vector.ExternalInterface.GetJsonDasLogsMessage
  _type_by_tag_value[161] = lambda : Anki.Vector.ExternalInterface.SetEnableSpeedChooser
  _type_by_tag_value[162] = lambda : Anki.Vector.ExternalInterface.LogRawCliffData
  _type_by_tag_value[163] = lambda : Anki.Vector.ExternalInterface.LogRawProxData
  _type_by_tag_value[164] = lambda : Anki.Vector.ExternalInterface.ConnectToCube
  _type_by_tag_value[165] = lambda : Anki.Vector.ExternalInterface.DisconnectFromCube
  _type_by_tag_value[166] = lambda : Anki.Vector.ExternalInterface.ForgetPreferredCube
  _type_by_tag_value[167] = lambda : Anki.Vector.ExternalInterface.SetPreferredCube
  _type_by_tag_value[168] = lambda : Anki.Vector.ExternalInterface.SendAvailableObjects
  _type_by_tag_value[169] = lambda : Anki.Vector.ExternalInterface.SaveCalibrationImage
  _type_by_tag_value[170] = lambda : Anki.Vector.ExternalInterface.ClearCalibrationImages
  _type_by_tag_value[171] = lambda : Anki.Vector.ExternalInterface.ComputeCameraCalibration
  _type_by_tag_value[172] = lambda : Anki.Vector.ExternalInterface.TransferFile
  _type_by_tag_value[173] = lambda : Anki.Vector.ExternalInterface.SetCameraSettings
  _type_by_tag_value[174] = lambda : Anki.Vector.ExternalInterface.RequestRobotSettings
  

Anki.Vector.ExternalInterface.MessageGameToEngine = MessageGameToEngine
del MessageGameToEngine


