"""
Autogenerated python message buffer code.
Source: clad/robotInterface/messageEngineToRobot.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/robotInterface/messageEngineToRobot.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.Vector = 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.types.animationTypes import Anki as _Anki
Anki.update(_Anki.deep_clone())

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

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

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

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

from clad.types.proceduralFaceTypes 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.sdkAudioTypes 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.textToSpeechTypes import Anki as _Anki
Anki.update(_Anki.deep_clone())

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

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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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


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

  __slots__ = (
    '_calibrateHead', # bool
    '_calibrateLift', # bool
    '_reason',        # Anki.Vector.MotorCalibrationReason
  )

  @property
  def calibrateHead(self):
    "bool calibrateHead struct property."
    return self._calibrateHead

  @calibrateHead.setter
  def calibrateHead(self, value):
    self._calibrateHead = msgbuffers.validate_bool(
      'StartMotorCalibration.calibrateHead', value)

  @property
  def calibrateLift(self):
    "bool calibrateLift struct property."
    return self._calibrateLift

  @calibrateLift.setter
  def calibrateLift(self, value):
    self._calibrateLift = msgbuffers.validate_bool(
      'StartMotorCalibration.calibrateLift', value)

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

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

  def __init__(self, calibrateHead=False, calibrateLift=False, reason=Anki.Vector.MotorCalibrationReason.Startup):
    self.calibrateHead = calibrateHead
    self.calibrateLift = calibrateLift
    self.reason = reason

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

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

  def pack_to(self, writer):
    "Writes the current StartMotorCalibration to the given BinaryWriter."
    writer.write(int(self._calibrateHead), 'b')
    writer.write(int(self._calibrateLift), 'b')
    writer.write(self._reason, 'B')

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

  def __str__(self):
    return '{type}(calibrateHead={calibrateHead}, calibrateLift={calibrateLift}, reason={reason})'.format(
      type=type(self).__name__,
      calibrateHead=self._calibrateHead,
      calibrateLift=self._calibrateLift,
      reason=self._reason)

  def __repr__(self):
    return '{type}(calibrateHead={calibrateHead}, calibrateLift={calibrateLift}, reason={reason})'.format(
      type=type(self).__name__,
      calibrateHead=repr(self._calibrateHead),
      calibrateLift=repr(self._calibrateLift),
      reason=repr(self._reason))

Anki.Vector.RobotInterface.StartMotorCalibration = StartMotorCalibration
del StartMotorCalibration


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.RobotInterface.DriveWheels = DriveWheels
del DriveWheels


class DriveWheelsCurvature(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(
      'DriveWheelsCurvature.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(
      'DriveWheelsCurvature.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(
      'DriveWheelsCurvature.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 DriveWheelsCurvature from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('DriveWheelsCurvature.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 DriveWheelsCurvature 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 DriveWheelsCurvature, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

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


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.RobotInterface.MoveLift = MoveLift
del MoveLift


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.RobotInterface.MoveHead = MoveHead
del MoveHead


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

  __slots__ = (
    '_height_mm',             # float_32
    '_max_speed_rad_per_sec', # float_32
    '_accel_rad_per_sec2',    # float_32
    '_duration_sec',          # float_32
    '_actionID',              # uint_8
  )

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

  @property
  def max_speed_rad_per_sec(self):
    "float_32 max_speed_rad_per_sec struct property."
    return self._max_speed_rad_per_sec

  @max_speed_rad_per_sec.setter
  def max_speed_rad_per_sec(self, value):
    self._max_speed_rad_per_sec = msgbuffers.validate_float(
      'SetLiftHeight.max_speed_rad_per_sec', value, 'f')

  @property
  def accel_rad_per_sec2(self):
    "float_32 accel_rad_per_sec2 struct property."
    return self._accel_rad_per_sec2

  @accel_rad_per_sec2.setter
  def accel_rad_per_sec2(self, value):
    self._accel_rad_per_sec2 = msgbuffers.validate_float(
      'SetLiftHeight.accel_rad_per_sec2', value, 'f')

  @property
  def duration_sec(self):
    "float_32 duration_sec struct property."
    return self._duration_sec

  @duration_sec.setter
  def duration_sec(self, value):
    self._duration_sec = msgbuffers.validate_float(
      'SetLiftHeight.duration_sec', value, 'f')

  @property
  def actionID(self):
    "uint_8 actionID struct property."
    return self._actionID

  @actionID.setter
  def actionID(self, value):
    self._actionID = msgbuffers.validate_integer(
      'SetLiftHeight.actionID', value, 0, 255)

  def __init__(self, height_mm=0.0, max_speed_rad_per_sec=0.0, accel_rad_per_sec2=0.0, duration_sec=0.0, actionID=0):
    self.height_mm = height_mm
    self.max_speed_rad_per_sec = max_speed_rad_per_sec
    self.accel_rad_per_sec2 = accel_rad_per_sec2
    self.duration_sec = duration_sec
    self.actionID = actionID

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

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

  def pack_to(self, writer):
    "Writes the current SetLiftHeight to the given BinaryWriter."
    writer.write(self._height_mm, 'f')
    writer.write(self._max_speed_rad_per_sec, 'f')
    writer.write(self._accel_rad_per_sec2, 'f')
    writer.write(self._duration_sec, 'f')
    writer.write(self._actionID, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._height_mm == other._height_mm and
        self._max_speed_rad_per_sec == other._max_speed_rad_per_sec and
        self._accel_rad_per_sec2 == other._accel_rad_per_sec2 and
        self._duration_sec == other._duration_sec and
        self._actionID == other._actionID)
    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._height_mm, 'f') +
      msgbuffers.size(self._max_speed_rad_per_sec, 'f') +
      msgbuffers.size(self._accel_rad_per_sec2, 'f') +
      msgbuffers.size(self._duration_sec, 'f') +
      msgbuffers.size(self._actionID, 'B'))

  def __str__(self):
    return '{type}(height_mm={height_mm}, max_speed_rad_per_sec={max_speed_rad_per_sec}, accel_rad_per_sec2={accel_rad_per_sec2}, duration_sec={duration_sec}, actionID={actionID})'.format(
      type=type(self).__name__,
      height_mm=self._height_mm,
      max_speed_rad_per_sec=self._max_speed_rad_per_sec,
      accel_rad_per_sec2=self._accel_rad_per_sec2,
      duration_sec=self._duration_sec,
      actionID=self._actionID)

  def __repr__(self):
    return '{type}(height_mm={height_mm}, max_speed_rad_per_sec={max_speed_rad_per_sec}, accel_rad_per_sec2={accel_rad_per_sec2}, duration_sec={duration_sec}, actionID={actionID})'.format(
      type=type(self).__name__,
      height_mm=repr(self._height_mm),
      max_speed_rad_per_sec=repr(self._max_speed_rad_per_sec),
      accel_rad_per_sec2=repr(self._accel_rad_per_sec2),
      duration_sec=repr(self._duration_sec),
      actionID=repr(self._actionID))

Anki.Vector.RobotInterface.SetLiftHeight = SetLiftHeight
del SetLiftHeight


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

  __slots__ = (
    '_angle_rad',             # float_32
    '_max_speed_rad_per_sec', # float_32
    '_accel_rad_per_sec2',    # float_32
    '_duration_sec',          # float_32
    '_actionID',              # uint_8
  )

  @property
  def angle_rad(self):
    "float_32 angle_rad struct property."
    return self._angle_rad

  @angle_rad.setter
  def angle_rad(self, value):
    self._angle_rad = msgbuffers.validate_float(
      'SetLiftAngle.angle_rad', value, 'f')

  @property
  def max_speed_rad_per_sec(self):
    "float_32 max_speed_rad_per_sec struct property."
    return self._max_speed_rad_per_sec

  @max_speed_rad_per_sec.setter
  def max_speed_rad_per_sec(self, value):
    self._max_speed_rad_per_sec = msgbuffers.validate_float(
      'SetLiftAngle.max_speed_rad_per_sec', value, 'f')

  @property
  def accel_rad_per_sec2(self):
    "float_32 accel_rad_per_sec2 struct property."
    return self._accel_rad_per_sec2

  @accel_rad_per_sec2.setter
  def accel_rad_per_sec2(self, value):
    self._accel_rad_per_sec2 = msgbuffers.validate_float(
      'SetLiftAngle.accel_rad_per_sec2', value, 'f')

  @property
  def duration_sec(self):
    "float_32 duration_sec struct property."
    return self._duration_sec

  @duration_sec.setter
  def duration_sec(self, value):
    self._duration_sec = msgbuffers.validate_float(
      'SetLiftAngle.duration_sec', value, 'f')

  @property
  def actionID(self):
    "uint_8 actionID struct property."
    return self._actionID

  @actionID.setter
  def actionID(self, value):
    self._actionID = msgbuffers.validate_integer(
      'SetLiftAngle.actionID', value, 0, 255)

  def __init__(self, angle_rad=0.0, max_speed_rad_per_sec=0.0, accel_rad_per_sec2=0.0, duration_sec=0.0, actionID=0):
    self.angle_rad = angle_rad
    self.max_speed_rad_per_sec = max_speed_rad_per_sec
    self.accel_rad_per_sec2 = accel_rad_per_sec2
    self.duration_sec = duration_sec
    self.actionID = actionID

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

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

  def pack_to(self, writer):
    "Writes the current SetLiftAngle to the given BinaryWriter."
    writer.write(self._angle_rad, 'f')
    writer.write(self._max_speed_rad_per_sec, 'f')
    writer.write(self._accel_rad_per_sec2, 'f')
    writer.write(self._duration_sec, 'f')
    writer.write(self._actionID, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._angle_rad == other._angle_rad and
        self._max_speed_rad_per_sec == other._max_speed_rad_per_sec and
        self._accel_rad_per_sec2 == other._accel_rad_per_sec2 and
        self._duration_sec == other._duration_sec and
        self._actionID == other._actionID)
    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._angle_rad, 'f') +
      msgbuffers.size(self._max_speed_rad_per_sec, 'f') +
      msgbuffers.size(self._accel_rad_per_sec2, 'f') +
      msgbuffers.size(self._duration_sec, 'f') +
      msgbuffers.size(self._actionID, 'B'))

  def __str__(self):
    return '{type}(angle_rad={angle_rad}, max_speed_rad_per_sec={max_speed_rad_per_sec}, accel_rad_per_sec2={accel_rad_per_sec2}, duration_sec={duration_sec}, actionID={actionID})'.format(
      type=type(self).__name__,
      angle_rad=self._angle_rad,
      max_speed_rad_per_sec=self._max_speed_rad_per_sec,
      accel_rad_per_sec2=self._accel_rad_per_sec2,
      duration_sec=self._duration_sec,
      actionID=self._actionID)

  def __repr__(self):
    return '{type}(angle_rad={angle_rad}, max_speed_rad_per_sec={max_speed_rad_per_sec}, accel_rad_per_sec2={accel_rad_per_sec2}, duration_sec={duration_sec}, actionID={actionID})'.format(
      type=type(self).__name__,
      angle_rad=repr(self._angle_rad),
      max_speed_rad_per_sec=repr(self._max_speed_rad_per_sec),
      accel_rad_per_sec2=repr(self._accel_rad_per_sec2),
      duration_sec=repr(self._duration_sec),
      actionID=repr(self._actionID))

Anki.Vector.RobotInterface.SetLiftAngle = SetLiftAngle
del SetLiftAngle


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

  __slots__ = (
    '_angle_rad',             # float_32
    '_max_speed_rad_per_sec', # float_32
    '_accel_rad_per_sec2',    # float_32
    '_duration_sec',          # float_32
    '_actionID',              # uint_8
  )

  @property
  def angle_rad(self):
    "float_32 angle_rad struct property."
    return self._angle_rad

  @angle_rad.setter
  def angle_rad(self, value):
    self._angle_rad = msgbuffers.validate_float(
      'SetHeadAngle.angle_rad', value, 'f')

  @property
  def max_speed_rad_per_sec(self):
    "float_32 max_speed_rad_per_sec struct property."
    return self._max_speed_rad_per_sec

  @max_speed_rad_per_sec.setter
  def max_speed_rad_per_sec(self, value):
    self._max_speed_rad_per_sec = msgbuffers.validate_float(
      'SetHeadAngle.max_speed_rad_per_sec', value, 'f')

  @property
  def accel_rad_per_sec2(self):
    "float_32 accel_rad_per_sec2 struct property."
    return self._accel_rad_per_sec2

  @accel_rad_per_sec2.setter
  def accel_rad_per_sec2(self, value):
    self._accel_rad_per_sec2 = msgbuffers.validate_float(
      'SetHeadAngle.accel_rad_per_sec2', value, 'f')

  @property
  def duration_sec(self):
    "float_32 duration_sec struct property."
    return self._duration_sec

  @duration_sec.setter
  def duration_sec(self, value):
    self._duration_sec = msgbuffers.validate_float(
      'SetHeadAngle.duration_sec', value, 'f')

  @property
  def actionID(self):
    "uint_8 actionID struct property."
    return self._actionID

  @actionID.setter
  def actionID(self, value):
    self._actionID = msgbuffers.validate_integer(
      'SetHeadAngle.actionID', value, 0, 255)

  def __init__(self, angle_rad=0.0, max_speed_rad_per_sec=0.0, accel_rad_per_sec2=0.0, duration_sec=0.0, actionID=0):
    self.angle_rad = angle_rad
    self.max_speed_rad_per_sec = max_speed_rad_per_sec
    self.accel_rad_per_sec2 = accel_rad_per_sec2
    self.duration_sec = duration_sec
    self.actionID = actionID

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

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

  def pack_to(self, writer):
    "Writes the current SetHeadAngle to the given BinaryWriter."
    writer.write(self._angle_rad, 'f')
    writer.write(self._max_speed_rad_per_sec, 'f')
    writer.write(self._accel_rad_per_sec2, 'f')
    writer.write(self._duration_sec, 'f')
    writer.write(self._actionID, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._angle_rad == other._angle_rad and
        self._max_speed_rad_per_sec == other._max_speed_rad_per_sec and
        self._accel_rad_per_sec2 == other._accel_rad_per_sec2 and
        self._duration_sec == other._duration_sec and
        self._actionID == other._actionID)
    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._angle_rad, 'f') +
      msgbuffers.size(self._max_speed_rad_per_sec, 'f') +
      msgbuffers.size(self._accel_rad_per_sec2, 'f') +
      msgbuffers.size(self._duration_sec, 'f') +
      msgbuffers.size(self._actionID, 'B'))

  def __str__(self):
    return '{type}(angle_rad={angle_rad}, max_speed_rad_per_sec={max_speed_rad_per_sec}, accel_rad_per_sec2={accel_rad_per_sec2}, duration_sec={duration_sec}, actionID={actionID})'.format(
      type=type(self).__name__,
      angle_rad=self._angle_rad,
      max_speed_rad_per_sec=self._max_speed_rad_per_sec,
      accel_rad_per_sec2=self._accel_rad_per_sec2,
      duration_sec=self._duration_sec,
      actionID=self._actionID)

  def __repr__(self):
    return '{type}(angle_rad={angle_rad}, max_speed_rad_per_sec={max_speed_rad_per_sec}, accel_rad_per_sec2={accel_rad_per_sec2}, duration_sec={duration_sec}, actionID={actionID})'.format(
      type=type(self).__name__,
      angle_rad=repr(self._angle_rad),
      max_speed_rad_per_sec=repr(self._max_speed_rad_per_sec),
      accel_rad_per_sec2=repr(self._accel_rad_per_sec2),
      duration_sec=repr(self._duration_sec),
      actionID=repr(self._actionID))

Anki.Vector.RobotInterface.SetHeadAngle = SetHeadAngle
del SetHeadAngle


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

  __slots__ = (
    '_angle_rad',              # float_32
    '_max_speed_rad_per_sec',  # float_32
    '_accel_rad_per_sec2',     # float_32
    '_angle_tolerance',        # float_32
    '_num_half_revolutions',   # uint_16
    '_use_shortest_direction', # bool
    '_actionID',               # uint_8
  )

  @property
  def angle_rad(self):
    "float_32 angle_rad struct property."
    return self._angle_rad

  @angle_rad.setter
  def angle_rad(self, value):
    self._angle_rad = msgbuffers.validate_float(
      'SetBodyAngle.angle_rad', value, 'f')

  @property
  def max_speed_rad_per_sec(self):
    "float_32 max_speed_rad_per_sec struct property."
    return self._max_speed_rad_per_sec

  @max_speed_rad_per_sec.setter
  def max_speed_rad_per_sec(self, value):
    self._max_speed_rad_per_sec = msgbuffers.validate_float(
      'SetBodyAngle.max_speed_rad_per_sec', value, 'f')

  @property
  def accel_rad_per_sec2(self):
    "float_32 accel_rad_per_sec2 struct property."
    return self._accel_rad_per_sec2

  @accel_rad_per_sec2.setter
  def accel_rad_per_sec2(self, value):
    self._accel_rad_per_sec2 = msgbuffers.validate_float(
      'SetBodyAngle.accel_rad_per_sec2', value, 'f')

  @property
  def angle_tolerance(self):
    "float_32 angle_tolerance struct property."
    return self._angle_tolerance

  @angle_tolerance.setter
  def angle_tolerance(self, value):
    self._angle_tolerance = msgbuffers.validate_float(
      'SetBodyAngle.angle_tolerance', value, 'f')

  @property
  def num_half_revolutions(self):
    "uint_16 num_half_revolutions struct property."
    return self._num_half_revolutions

  @num_half_revolutions.setter
  def num_half_revolutions(self, value):
    self._num_half_revolutions = msgbuffers.validate_integer(
      'SetBodyAngle.num_half_revolutions', value, 0, 65535)

  @property
  def use_shortest_direction(self):
    "bool use_shortest_direction struct property."
    return self._use_shortest_direction

  @use_shortest_direction.setter
  def use_shortest_direction(self, value):
    self._use_shortest_direction = msgbuffers.validate_bool(
      'SetBodyAngle.use_shortest_direction', value)

  @property
  def actionID(self):
    "uint_8 actionID struct property."
    return self._actionID

  @actionID.setter
  def actionID(self, value):
    self._actionID = msgbuffers.validate_integer(
      'SetBodyAngle.actionID', value, 0, 255)

  def __init__(self, angle_rad=0.0, max_speed_rad_per_sec=0.0, accel_rad_per_sec2=0.0, angle_tolerance=0.0, num_half_revolutions=0, use_shortest_direction=False, actionID=0):
    self.angle_rad = angle_rad
    self.max_speed_rad_per_sec = max_speed_rad_per_sec
    self.accel_rad_per_sec2 = accel_rad_per_sec2
    self.angle_tolerance = angle_tolerance
    self.num_half_revolutions = num_half_revolutions
    self.use_shortest_direction = use_shortest_direction
    self.actionID = actionID

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetBodyAngle from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetBodyAngle.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 SetBodyAngle from the given BinaryReader."
    _angle_rad = reader.read('f')
    _max_speed_rad_per_sec = reader.read('f')
    _accel_rad_per_sec2 = reader.read('f')
    _angle_tolerance = reader.read('f')
    _num_half_revolutions = reader.read('H')
    _use_shortest_direction = bool(reader.read('b'))
    _actionID = reader.read('B')
    return cls(_angle_rad, _max_speed_rad_per_sec, _accel_rad_per_sec2, _angle_tolerance, _num_half_revolutions, _use_shortest_direction, _actionID)

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

  def pack_to(self, writer):
    "Writes the current SetBodyAngle to the given BinaryWriter."
    writer.write(self._angle_rad, 'f')
    writer.write(self._max_speed_rad_per_sec, 'f')
    writer.write(self._accel_rad_per_sec2, 'f')
    writer.write(self._angle_tolerance, 'f')
    writer.write(self._num_half_revolutions, 'H')
    writer.write(int(self._use_shortest_direction), 'b')
    writer.write(self._actionID, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._angle_rad == other._angle_rad and
        self._max_speed_rad_per_sec == other._max_speed_rad_per_sec and
        self._accel_rad_per_sec2 == other._accel_rad_per_sec2 and
        self._angle_tolerance == other._angle_tolerance and
        self._num_half_revolutions == other._num_half_revolutions and
        self._use_shortest_direction == other._use_shortest_direction and
        self._actionID == other._actionID)
    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._angle_rad, 'f') +
      msgbuffers.size(self._max_speed_rad_per_sec, 'f') +
      msgbuffers.size(self._accel_rad_per_sec2, 'f') +
      msgbuffers.size(self._angle_tolerance, 'f') +
      msgbuffers.size(self._num_half_revolutions, 'H') +
      msgbuffers.size(self._use_shortest_direction, 'b') +
      msgbuffers.size(self._actionID, 'B'))

  def __str__(self):
    return '{type}(angle_rad={angle_rad}, max_speed_rad_per_sec={max_speed_rad_per_sec}, accel_rad_per_sec2={accel_rad_per_sec2}, angle_tolerance={angle_tolerance}, num_half_revolutions={num_half_revolutions}, use_shortest_direction={use_shortest_direction}, actionID={actionID})'.format(
      type=type(self).__name__,
      angle_rad=self._angle_rad,
      max_speed_rad_per_sec=self._max_speed_rad_per_sec,
      accel_rad_per_sec2=self._accel_rad_per_sec2,
      angle_tolerance=self._angle_tolerance,
      num_half_revolutions=self._num_half_revolutions,
      use_shortest_direction=self._use_shortest_direction,
      actionID=self._actionID)

  def __repr__(self):
    return '{type}(angle_rad={angle_rad}, max_speed_rad_per_sec={max_speed_rad_per_sec}, accel_rad_per_sec2={accel_rad_per_sec2}, angle_tolerance={angle_tolerance}, num_half_revolutions={num_half_revolutions}, use_shortest_direction={use_shortest_direction}, actionID={actionID})'.format(
      type=type(self).__name__,
      angle_rad=repr(self._angle_rad),
      max_speed_rad_per_sec=repr(self._max_speed_rad_per_sec),
      accel_rad_per_sec2=repr(self._accel_rad_per_sec2),
      angle_tolerance=repr(self._angle_tolerance),
      num_half_revolutions=repr(self._num_half_revolutions),
      use_shortest_direction=repr(self._use_shortest_direction),
      actionID=repr(self._actionID))

Anki.Vector.RobotInterface.SetBodyAngle = SetBodyAngle
del SetBodyAngle


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

  __slots__ = (
    '_speed_rad_per_sec',  # float_32
    '_accel_rad_per_sec2', # 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(
      'TurnInPlaceAtSpeed.speed_rad_per_sec', value, 'f')

  @property
  def accel_rad_per_sec2(self):
    "float_32 accel_rad_per_sec2 struct property."
    return self._accel_rad_per_sec2

  @accel_rad_per_sec2.setter
  def accel_rad_per_sec2(self, value):
    self._accel_rad_per_sec2 = msgbuffers.validate_float(
      'TurnInPlaceAtSpeed.accel_rad_per_sec2', value, 'f')

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

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

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

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

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

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

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

Anki.Vector.RobotInterface.TurnInPlaceAtSpeed = TurnInPlaceAtSpeed
del TurnInPlaceAtSpeed


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.RobotInterface.StopAllMotors = StopAllMotors
del StopAllMotors


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

  __slots__ = (
    '_pathID', # uint_16
  )

  @property
  def pathID(self):
    "uint_16 pathID struct property."
    return self._pathID

  @pathID.setter
  def pathID(self, value):
    self._pathID = msgbuffers.validate_integer(
      'ClearPath.pathID', value, 0, 65535)

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

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

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

  def pack_to(self, writer):
    "Writes the current ClearPath to the given BinaryWriter."
    writer.write(self._pathID, 'H')

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

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

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

Anki.Vector.RobotInterface.ClearPath = ClearPath
del ClearPath


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

  __slots__ = (
    '_target', # float_32
    '_accel',  # float_32
    '_decel',  # float_32
  )

  @property
  def target(self):
    "float_32 target struct property."
    return self._target

  @target.setter
  def target(self, value):
    self._target = msgbuffers.validate_float(
      'PathSegmentSpeed.target', 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(
      'PathSegmentSpeed.accel', value, 'f')

  @property
  def decel(self):
    "float_32 decel struct property."
    return self._decel

  @decel.setter
  def decel(self, value):
    self._decel = msgbuffers.validate_float(
      'PathSegmentSpeed.decel', value, 'f')

  def __init__(self, target=0.0, accel=0.0, decel=0.0):
    self.target = target
    self.accel = accel
    self.decel = decel

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

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

  def pack_to(self, writer):
    "Writes the current PathSegmentSpeed to the given BinaryWriter."
    writer.write(self._target, 'f')
    writer.write(self._accel, 'f')
    writer.write(self._decel, 'f')

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

  def __str__(self):
    return '{type}(target={target}, accel={accel}, decel={decel})'.format(
      type=type(self).__name__,
      target=self._target,
      accel=self._accel,
      decel=self._decel)

  def __repr__(self):
    return '{type}(target={target}, accel={accel}, decel={decel})'.format(
      type=type(self).__name__,
      target=repr(self._target),
      accel=repr(self._accel),
      decel=repr(self._decel))

Anki.Vector.RobotInterface.PathSegmentSpeed = PathSegmentSpeed
del PathSegmentSpeed


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

  __slots__ = (
    '_x_start_mm', # float_32
    '_y_start_mm', # float_32
    '_x_end_mm',   # float_32
    '_y_end_mm',   # float_32
    '_speed',      # Anki.Vector.RobotInterface.PathSegmentSpeed
  )

  @property
  def x_start_mm(self):
    "float_32 x_start_mm struct property."
    return self._x_start_mm

  @x_start_mm.setter
  def x_start_mm(self, value):
    self._x_start_mm = msgbuffers.validate_float(
      'AppendPathSegmentLine.x_start_mm', value, 'f')

  @property
  def y_start_mm(self):
    "float_32 y_start_mm struct property."
    return self._y_start_mm

  @y_start_mm.setter
  def y_start_mm(self, value):
    self._y_start_mm = msgbuffers.validate_float(
      'AppendPathSegmentLine.y_start_mm', value, 'f')

  @property
  def x_end_mm(self):
    "float_32 x_end_mm struct property."
    return self._x_end_mm

  @x_end_mm.setter
  def x_end_mm(self, value):
    self._x_end_mm = msgbuffers.validate_float(
      'AppendPathSegmentLine.x_end_mm', value, 'f')

  @property
  def y_end_mm(self):
    "float_32 y_end_mm struct property."
    return self._y_end_mm

  @y_end_mm.setter
  def y_end_mm(self, value):
    self._y_end_mm = msgbuffers.validate_float(
      'AppendPathSegmentLine.y_end_mm', value, 'f')

  @property
  def speed(self):
    "Anki.Vector.RobotInterface.PathSegmentSpeed speed struct property."
    return self._speed

  @speed.setter
  def speed(self, value):
    self._speed = msgbuffers.validate_object(
      'AppendPathSegmentLine.speed', value, Anki.Vector.RobotInterface.PathSegmentSpeed)

  def __init__(self, x_start_mm=0.0, y_start_mm=0.0, x_end_mm=0.0, y_end_mm=0.0, speed=Anki.Vector.RobotInterface.PathSegmentSpeed()):
    self.x_start_mm = x_start_mm
    self.y_start_mm = y_start_mm
    self.x_end_mm = x_end_mm
    self.y_end_mm = y_end_mm
    self.speed = speed

  @classmethod
  def unpack(cls, buffer):
    "Reads a new AppendPathSegmentLine from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('AppendPathSegmentLine.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 AppendPathSegmentLine from the given BinaryReader."
    _x_start_mm = reader.read('f')
    _y_start_mm = reader.read('f')
    _x_end_mm = reader.read('f')
    _y_end_mm = reader.read('f')
    _speed = reader.read_object(Anki.Vector.RobotInterface.PathSegmentSpeed.unpack_from)
    return cls(_x_start_mm, _y_start_mm, _x_end_mm, _y_end_mm, _speed)

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

  def pack_to(self, writer):
    "Writes the current AppendPathSegmentLine to the given BinaryWriter."
    writer.write(self._x_start_mm, 'f')
    writer.write(self._y_start_mm, 'f')
    writer.write(self._x_end_mm, 'f')
    writer.write(self._y_end_mm, 'f')
    writer.write_object(self._speed)

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._x_start_mm == other._x_start_mm and
        self._y_start_mm == other._y_start_mm and
        self._x_end_mm == other._x_end_mm and
        self._y_end_mm == other._y_end_mm and
        self._speed == other._speed)
    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_start_mm, 'f') +
      msgbuffers.size(self._y_start_mm, 'f') +
      msgbuffers.size(self._x_end_mm, 'f') +
      msgbuffers.size(self._y_end_mm, 'f') +
      msgbuffers.size_object(self._speed))

  def __str__(self):
    return '{type}(x_start_mm={x_start_mm}, y_start_mm={y_start_mm}, x_end_mm={x_end_mm}, y_end_mm={y_end_mm}, speed={speed})'.format(
      type=type(self).__name__,
      x_start_mm=self._x_start_mm,
      y_start_mm=self._y_start_mm,
      x_end_mm=self._x_end_mm,
      y_end_mm=self._y_end_mm,
      speed=self._speed)

  def __repr__(self):
    return '{type}(x_start_mm={x_start_mm}, y_start_mm={y_start_mm}, x_end_mm={x_end_mm}, y_end_mm={y_end_mm}, speed={speed})'.format(
      type=type(self).__name__,
      x_start_mm=repr(self._x_start_mm),
      y_start_mm=repr(self._y_start_mm),
      x_end_mm=repr(self._x_end_mm),
      y_end_mm=repr(self._y_end_mm),
      speed=repr(self._speed))

Anki.Vector.RobotInterface.AppendPathSegmentLine = AppendPathSegmentLine
del AppendPathSegmentLine


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

  __slots__ = (
    '_x_center_mm', # float_32
    '_y_center_mm', # float_32
    '_radius_mm',   # float_32
    '_startRad',    # float_32
    '_sweepRad',    # float_32
    '_speed',       # Anki.Vector.RobotInterface.PathSegmentSpeed
  )

  @property
  def x_center_mm(self):
    "float_32 x_center_mm struct property."
    return self._x_center_mm

  @x_center_mm.setter
  def x_center_mm(self, value):
    self._x_center_mm = msgbuffers.validate_float(
      'AppendPathSegmentArc.x_center_mm', value, 'f')

  @property
  def y_center_mm(self):
    "float_32 y_center_mm struct property."
    return self._y_center_mm

  @y_center_mm.setter
  def y_center_mm(self, value):
    self._y_center_mm = msgbuffers.validate_float(
      'AppendPathSegmentArc.y_center_mm', value, 'f')

  @property
  def radius_mm(self):
    "float_32 radius_mm struct property."
    return self._radius_mm

  @radius_mm.setter
  def radius_mm(self, value):
    self._radius_mm = msgbuffers.validate_float(
      'AppendPathSegmentArc.radius_mm', value, 'f')

  @property
  def startRad(self):
    "float_32 startRad struct property."
    return self._startRad

  @startRad.setter
  def startRad(self, value):
    self._startRad = msgbuffers.validate_float(
      'AppendPathSegmentArc.startRad', value, 'f')

  @property
  def sweepRad(self):
    "float_32 sweepRad struct property."
    return self._sweepRad

  @sweepRad.setter
  def sweepRad(self, value):
    self._sweepRad = msgbuffers.validate_float(
      'AppendPathSegmentArc.sweepRad', value, 'f')

  @property
  def speed(self):
    "Anki.Vector.RobotInterface.PathSegmentSpeed speed struct property."
    return self._speed

  @speed.setter
  def speed(self, value):
    self._speed = msgbuffers.validate_object(
      'AppendPathSegmentArc.speed', value, Anki.Vector.RobotInterface.PathSegmentSpeed)

  def __init__(self, x_center_mm=0.0, y_center_mm=0.0, radius_mm=0.0, startRad=0.0, sweepRad=0.0, speed=Anki.Vector.RobotInterface.PathSegmentSpeed()):
    self.x_center_mm = x_center_mm
    self.y_center_mm = y_center_mm
    self.radius_mm = radius_mm
    self.startRad = startRad
    self.sweepRad = sweepRad
    self.speed = speed

  @classmethod
  def unpack(cls, buffer):
    "Reads a new AppendPathSegmentArc from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('AppendPathSegmentArc.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 AppendPathSegmentArc from the given BinaryReader."
    _x_center_mm = reader.read('f')
    _y_center_mm = reader.read('f')
    _radius_mm = reader.read('f')
    _startRad = reader.read('f')
    _sweepRad = reader.read('f')
    _speed = reader.read_object(Anki.Vector.RobotInterface.PathSegmentSpeed.unpack_from)
    return cls(_x_center_mm, _y_center_mm, _radius_mm, _startRad, _sweepRad, _speed)

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

  def pack_to(self, writer):
    "Writes the current AppendPathSegmentArc to the given BinaryWriter."
    writer.write(self._x_center_mm, 'f')
    writer.write(self._y_center_mm, 'f')
    writer.write(self._radius_mm, 'f')
    writer.write(self._startRad, 'f')
    writer.write(self._sweepRad, 'f')
    writer.write_object(self._speed)

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._x_center_mm == other._x_center_mm and
        self._y_center_mm == other._y_center_mm and
        self._radius_mm == other._radius_mm and
        self._startRad == other._startRad and
        self._sweepRad == other._sweepRad and
        self._speed == other._speed)
    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_center_mm, 'f') +
      msgbuffers.size(self._y_center_mm, 'f') +
      msgbuffers.size(self._radius_mm, 'f') +
      msgbuffers.size(self._startRad, 'f') +
      msgbuffers.size(self._sweepRad, 'f') +
      msgbuffers.size_object(self._speed))

  def __str__(self):
    return '{type}(x_center_mm={x_center_mm}, y_center_mm={y_center_mm}, radius_mm={radius_mm}, startRad={startRad}, sweepRad={sweepRad}, speed={speed})'.format(
      type=type(self).__name__,
      x_center_mm=self._x_center_mm,
      y_center_mm=self._y_center_mm,
      radius_mm=self._radius_mm,
      startRad=self._startRad,
      sweepRad=self._sweepRad,
      speed=self._speed)

  def __repr__(self):
    return '{type}(x_center_mm={x_center_mm}, y_center_mm={y_center_mm}, radius_mm={radius_mm}, startRad={startRad}, sweepRad={sweepRad}, speed={speed})'.format(
      type=type(self).__name__,
      x_center_mm=repr(self._x_center_mm),
      y_center_mm=repr(self._y_center_mm),
      radius_mm=repr(self._radius_mm),
      startRad=repr(self._startRad),
      sweepRad=repr(self._sweepRad),
      speed=repr(self._speed))

Anki.Vector.RobotInterface.AppendPathSegmentArc = AppendPathSegmentArc
del AppendPathSegmentArc


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

  __slots__ = (
    '_x_center_mm',    # float_32
    '_y_center_mm',    # float_32
    '_startRad',       # float_32
    '_targetRad',      # float_32
    '_angleTolerance', # float_32
    '_speed',          # Anki.Vector.RobotInterface.PathSegmentSpeed
    '_useShortestDir', # bool
  )

  @property
  def x_center_mm(self):
    "float_32 x_center_mm struct property."
    return self._x_center_mm

  @x_center_mm.setter
  def x_center_mm(self, value):
    self._x_center_mm = msgbuffers.validate_float(
      'AppendPathSegmentPointTurn.x_center_mm', value, 'f')

  @property
  def y_center_mm(self):
    "float_32 y_center_mm struct property."
    return self._y_center_mm

  @y_center_mm.setter
  def y_center_mm(self, value):
    self._y_center_mm = msgbuffers.validate_float(
      'AppendPathSegmentPointTurn.y_center_mm', value, 'f')

  @property
  def startRad(self):
    "float_32 startRad struct property."
    return self._startRad

  @startRad.setter
  def startRad(self, value):
    self._startRad = msgbuffers.validate_float(
      'AppendPathSegmentPointTurn.startRad', value, 'f')

  @property
  def targetRad(self):
    "float_32 targetRad struct property."
    return self._targetRad

  @targetRad.setter
  def targetRad(self, value):
    self._targetRad = msgbuffers.validate_float(
      'AppendPathSegmentPointTurn.targetRad', value, 'f')

  @property
  def angleTolerance(self):
    "float_32 angleTolerance struct property."
    return self._angleTolerance

  @angleTolerance.setter
  def angleTolerance(self, value):
    self._angleTolerance = msgbuffers.validate_float(
      'AppendPathSegmentPointTurn.angleTolerance', value, 'f')

  @property
  def speed(self):
    "Anki.Vector.RobotInterface.PathSegmentSpeed speed struct property."
    return self._speed

  @speed.setter
  def speed(self, value):
    self._speed = msgbuffers.validate_object(
      'AppendPathSegmentPointTurn.speed', value, Anki.Vector.RobotInterface.PathSegmentSpeed)

  @property
  def useShortestDir(self):
    "bool useShortestDir struct property."
    return self._useShortestDir

  @useShortestDir.setter
  def useShortestDir(self, value):
    self._useShortestDir = msgbuffers.validate_bool(
      'AppendPathSegmentPointTurn.useShortestDir', value)

  def __init__(self, x_center_mm=0.0, y_center_mm=0.0, startRad=0.0, targetRad=0.0, angleTolerance=0.0, speed=Anki.Vector.RobotInterface.PathSegmentSpeed(), useShortestDir=False):
    self.x_center_mm = x_center_mm
    self.y_center_mm = y_center_mm
    self.startRad = startRad
    self.targetRad = targetRad
    self.angleTolerance = angleTolerance
    self.speed = speed
    self.useShortestDir = useShortestDir

  @classmethod
  def unpack(cls, buffer):
    "Reads a new AppendPathSegmentPointTurn from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('AppendPathSegmentPointTurn.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 AppendPathSegmentPointTurn from the given BinaryReader."
    _x_center_mm = reader.read('f')
    _y_center_mm = reader.read('f')
    _startRad = reader.read('f')
    _targetRad = reader.read('f')
    _angleTolerance = reader.read('f')
    _speed = reader.read_object(Anki.Vector.RobotInterface.PathSegmentSpeed.unpack_from)
    _useShortestDir = bool(reader.read('b'))
    return cls(_x_center_mm, _y_center_mm, _startRad, _targetRad, _angleTolerance, _speed, _useShortestDir)

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

  def pack_to(self, writer):
    "Writes the current AppendPathSegmentPointTurn to the given BinaryWriter."
    writer.write(self._x_center_mm, 'f')
    writer.write(self._y_center_mm, 'f')
    writer.write(self._startRad, 'f')
    writer.write(self._targetRad, 'f')
    writer.write(self._angleTolerance, 'f')
    writer.write_object(self._speed)
    writer.write(int(self._useShortestDir), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._x_center_mm == other._x_center_mm and
        self._y_center_mm == other._y_center_mm and
        self._startRad == other._startRad and
        self._targetRad == other._targetRad and
        self._angleTolerance == other._angleTolerance and
        self._speed == other._speed and
        self._useShortestDir == other._useShortestDir)
    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_center_mm, 'f') +
      msgbuffers.size(self._y_center_mm, 'f') +
      msgbuffers.size(self._startRad, 'f') +
      msgbuffers.size(self._targetRad, 'f') +
      msgbuffers.size(self._angleTolerance, 'f') +
      msgbuffers.size_object(self._speed) +
      msgbuffers.size(self._useShortestDir, 'b'))

  def __str__(self):
    return '{type}(x_center_mm={x_center_mm}, y_center_mm={y_center_mm}, startRad={startRad}, targetRad={targetRad}, angleTolerance={angleTolerance}, speed={speed}, useShortestDir={useShortestDir})'.format(
      type=type(self).__name__,
      x_center_mm=self._x_center_mm,
      y_center_mm=self._y_center_mm,
      startRad=self._startRad,
      targetRad=self._targetRad,
      angleTolerance=self._angleTolerance,
      speed=self._speed,
      useShortestDir=self._useShortestDir)

  def __repr__(self):
    return '{type}(x_center_mm={x_center_mm}, y_center_mm={y_center_mm}, startRad={startRad}, targetRad={targetRad}, angleTolerance={angleTolerance}, speed={speed}, useShortestDir={useShortestDir})'.format(
      type=type(self).__name__,
      x_center_mm=repr(self._x_center_mm),
      y_center_mm=repr(self._y_center_mm),
      startRad=repr(self._startRad),
      targetRad=repr(self._targetRad),
      angleTolerance=repr(self._angleTolerance),
      speed=repr(self._speed),
      useShortestDir=repr(self._useShortestDir))

Anki.Vector.RobotInterface.AppendPathSegmentPointTurn = AppendPathSegmentPointTurn
del AppendPathSegmentPointTurn


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

  __slots__ = (
    '_numPopFrontSegments', # uint_8
    '_numPopBackSegments',  # uint_8
  )

  @property
  def numPopFrontSegments(self):
    "uint_8 numPopFrontSegments struct property."
    return self._numPopFrontSegments

  @numPopFrontSegments.setter
  def numPopFrontSegments(self, value):
    self._numPopFrontSegments = msgbuffers.validate_integer(
      'TrimPath.numPopFrontSegments', value, 0, 255)

  @property
  def numPopBackSegments(self):
    "uint_8 numPopBackSegments struct property."
    return self._numPopBackSegments

  @numPopBackSegments.setter
  def numPopBackSegments(self, value):
    self._numPopBackSegments = msgbuffers.validate_integer(
      'TrimPath.numPopBackSegments', value, 0, 255)

  def __init__(self, numPopFrontSegments=0, numPopBackSegments=0):
    self.numPopFrontSegments = numPopFrontSegments
    self.numPopBackSegments = numPopBackSegments

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

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

  def pack_to(self, writer):
    "Writes the current TrimPath to the given BinaryWriter."
    writer.write(self._numPopFrontSegments, 'B')
    writer.write(self._numPopBackSegments, 'B')

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

  def __str__(self):
    return '{type}(numPopFrontSegments={numPopFrontSegments}, numPopBackSegments={numPopBackSegments})'.format(
      type=type(self).__name__,
      numPopFrontSegments=self._numPopFrontSegments,
      numPopBackSegments=self._numPopBackSegments)

  def __repr__(self):
    return '{type}(numPopFrontSegments={numPopFrontSegments}, numPopBackSegments={numPopBackSegments})'.format(
      type=type(self).__name__,
      numPopFrontSegments=repr(self._numPopFrontSegments),
      numPopBackSegments=repr(self._numPopBackSegments))

Anki.Vector.RobotInterface.TrimPath = TrimPath
del TrimPath


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

  __slots__ = (
    '_pathID', # uint_16
  )

  @property
  def pathID(self):
    "uint_16 pathID struct property."
    return self._pathID

  @pathID.setter
  def pathID(self, value):
    self._pathID = msgbuffers.validate_integer(
      'ExecutePath.pathID', value, 0, 65535)

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

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

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

  def pack_to(self, writer):
    "Writes the current ExecutePath to the given BinaryWriter."
    writer.write(self._pathID, 'H')

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

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

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

Anki.Vector.RobotInterface.ExecutePath = ExecutePath
del ExecutePath


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

  __slots__ = (
    '_timestamp',     # uint_32
    '_pose_frame_id', # uint_32
    '_origin_id',     # uint_32
    '_xPosition',     # float_32
    '_yPosition',     # float_32
    '_headingAngle',  # float_32
  )

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

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

  @property
  def pose_frame_id(self):
    "uint_32 pose_frame_id struct property."
    return self._pose_frame_id

  @pose_frame_id.setter
  def pose_frame_id(self, value):
    self._pose_frame_id = msgbuffers.validate_integer(
      'AbsoluteLocalizationUpdate.pose_frame_id', value, 0, 4294967295)

  @property
  def origin_id(self):
    "uint_32 origin_id struct property."
    return self._origin_id

  @origin_id.setter
  def origin_id(self, value):
    self._origin_id = msgbuffers.validate_integer(
      'AbsoluteLocalizationUpdate.origin_id', value, 0, 4294967295)

  @property
  def xPosition(self):
    "float_32 xPosition struct property."
    return self._xPosition

  @xPosition.setter
  def xPosition(self, value):
    self._xPosition = msgbuffers.validate_float(
      'AbsoluteLocalizationUpdate.xPosition', value, 'f')

  @property
  def yPosition(self):
    "float_32 yPosition struct property."
    return self._yPosition

  @yPosition.setter
  def yPosition(self, value):
    self._yPosition = msgbuffers.validate_float(
      'AbsoluteLocalizationUpdate.yPosition', value, 'f')

  @property
  def headingAngle(self):
    "float_32 headingAngle struct property."
    return self._headingAngle

  @headingAngle.setter
  def headingAngle(self, value):
    self._headingAngle = msgbuffers.validate_float(
      'AbsoluteLocalizationUpdate.headingAngle', value, 'f')

  def __init__(self, timestamp=0, pose_frame_id=0, origin_id=0, xPosition=0.0, yPosition=0.0, headingAngle=0.0):
    self.timestamp = timestamp
    self.pose_frame_id = pose_frame_id
    self.origin_id = origin_id
    self.xPosition = xPosition
    self.yPosition = yPosition
    self.headingAngle = headingAngle

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

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

  def pack_to(self, writer):
    "Writes the current AbsoluteLocalizationUpdate to the given BinaryWriter."
    writer.write(self._timestamp, 'I')
    writer.write(self._pose_frame_id, 'I')
    writer.write(self._origin_id, 'I')
    writer.write(self._xPosition, 'f')
    writer.write(self._yPosition, 'f')
    writer.write(self._headingAngle, 'f')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._timestamp == other._timestamp and
        self._pose_frame_id == other._pose_frame_id and
        self._origin_id == other._origin_id and
        self._xPosition == other._xPosition and
        self._yPosition == other._yPosition and
        self._headingAngle == other._headingAngle)
    else:
      return NotImplemented

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

  def __len__(self):
    return (msgbuffers.size(self._timestamp, 'I') +
      msgbuffers.size(self._pose_frame_id, 'I') +
      msgbuffers.size(self._origin_id, 'I') +
      msgbuffers.size(self._xPosition, 'f') +
      msgbuffers.size(self._yPosition, 'f') +
      msgbuffers.size(self._headingAngle, 'f'))

  def __str__(self):
    return '{type}(timestamp={timestamp}, pose_frame_id={pose_frame_id}, origin_id={origin_id}, xPosition={xPosition}, yPosition={yPosition}, headingAngle={headingAngle})'.format(
      type=type(self).__name__,
      timestamp=self._timestamp,
      pose_frame_id=self._pose_frame_id,
      origin_id=self._origin_id,
      xPosition=self._xPosition,
      yPosition=self._yPosition,
      headingAngle=self._headingAngle)

  def __repr__(self):
    return '{type}(timestamp={timestamp}, pose_frame_id={pose_frame_id}, origin_id={origin_id}, xPosition={xPosition}, yPosition={yPosition}, headingAngle={headingAngle})'.format(
      type=type(self).__name__,
      timestamp=repr(self._timestamp),
      pose_frame_id=repr(self._pose_frame_id),
      origin_id=repr(self._origin_id),
      xPosition=repr(self._xPosition),
      yPosition=repr(self._yPosition),
      headingAngle=repr(self._headingAngle))

Anki.Vector.RobotInterface.AbsoluteLocalizationUpdate = AbsoluteLocalizationUpdate
del AbsoluteLocalizationUpdate


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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


class CalmPowerMode(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(
      'CalmPowerMode.enable', value)

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

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

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

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


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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


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.RobotInterface.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.RobotInterface.RollActionParams = RollActionParams
del RollActionParams


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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

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

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

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

  def __len__(self):
    return 0

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

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

Anki.Vector.RobotInterface.SelfTestEnd = SelfTestEnd
del SelfTestEnd


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

  __slots__ = (
    '_period_tics', # uint_32
    '_motors',      # bool
    '_prox',        # bool
    '_battery',     # bool
  )

  @property
  def period_tics(self):
    "uint_32 period_tics struct property."
    return self._period_tics

  @period_tics.setter
  def period_tics(self, value):
    self._period_tics = msgbuffers.validate_integer(
      'PrintBodyData.period_tics', value, 0, 4294967295)

  @property
  def motors(self):
    "bool motors struct property."
    return self._motors

  @motors.setter
  def motors(self, value):
    self._motors = msgbuffers.validate_bool(
      'PrintBodyData.motors', value)

  @property
  def prox(self):
    "bool prox struct property."
    return self._prox

  @prox.setter
  def prox(self, value):
    self._prox = msgbuffers.validate_bool(
      'PrintBodyData.prox', value)

  @property
  def battery(self):
    "bool battery struct property."
    return self._battery

  @battery.setter
  def battery(self, value):
    self._battery = msgbuffers.validate_bool(
      'PrintBodyData.battery', value)

  def __init__(self, period_tics=0, motors=False, prox=False, battery=False):
    self.period_tics = period_tics
    self.motors = motors
    self.prox = prox
    self.battery = battery

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

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

  def pack_to(self, writer):
    "Writes the current PrintBodyData to the given BinaryWriter."
    writer.write(self._period_tics, 'I')
    writer.write(int(self._motors), 'b')
    writer.write(int(self._prox), 'b')
    writer.write(int(self._battery), 'b')

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

  def __str__(self):
    return '{type}(period_tics={period_tics}, motors={motors}, prox={prox}, battery={battery})'.format(
      type=type(self).__name__,
      period_tics=self._period_tics,
      motors=self._motors,
      prox=self._prox,
      battery=self._battery)

  def __repr__(self):
    return '{type}(period_tics={period_tics}, motors={motors}, prox={prox}, battery={battery})'.format(
      type=type(self).__name__,
      period_tics=repr(self._period_tics),
      motors=repr(self._motors),
      prox=repr(self._prox),
      battery=repr(self._battery))

Anki.Vector.RobotInterface.PrintBodyData = PrintBodyData
del PrintBodyData


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.RobotInterface.SetMotionModelParams = SetMotionModelParams
del SetMotionModelParams


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

  __slots__ = (
    '_layer', # uint_8
  )

  @property
  def layer(self):
    "uint_8 layer struct property."
    return self._layer

  @layer.setter
  def layer(self, value):
    self._layer = msgbuffers.validate_integer(
      'BackpackSetLayer.layer', value, 0, 255)

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

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

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

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

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

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

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

Anki.Vector.RobotInterface.BackpackSetLayer = BackpackSetLayer
del BackpackSetLayer


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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


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

  __slots__ = (
    '_motorID', # Anki.Vector.MotorID
    '_enable',  # bool
  )

  @property
  def motorID(self):
    "Anki.Vector.MotorID motorID struct property."
    return self._motorID

  @motorID.setter
  def motorID(self, value):
    self._motorID = msgbuffers.validate_integer(
      'EnableMotorPower.motorID', value, 0, 255)

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

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

  def __init__(self, motorID=Anki.Vector.MotorID.MOTOR_LEFT_WHEEL, enable=False):
    self.motorID = motorID
    self.enable = enable

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

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

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

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

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

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

Anki.Vector.RobotInterface.EnableMotorPower = EnableMotorPower
del EnableMotorPower


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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


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.RobotInterface.EnableStopOnCliff = EnableStopOnCliff
del EnableStopOnCliff


class EnableStopOnWhite(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(
      'EnableStopOnWhite.enable', value)

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

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

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

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


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

  __slots__ = (
    '_start', # bool
  )

  @property
  def start(self):
    "bool start struct property."
    return self._start

  @start.setter
  def start(self, value):
    self._start = msgbuffers.validate_bool(
      'CliffAlignToWhiteAction.start', value)

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

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

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

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

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

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

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

Anki.Vector.RobotInterface.CliffAlignToWhiteAction = CliffAlignToWhiteAction
del CliffAlignToWhiteAction


class EnableBraceWhenFalling(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(
      'EnableBraceWhenFalling.enable', value)

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

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

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

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


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

  __slots__ = (
    '_numLoops',       # uint_32
    '_startAt_ms',     # uint_32
    '_tag',            # uint_8
    '_renderInEyeHue', # bool
    '_animName',       # string[uint_8]
  )

  @property
  def numLoops(self):
    "uint_32 numLoops struct property."
    return self._numLoops

  @numLoops.setter
  def numLoops(self, value):
    self._numLoops = msgbuffers.validate_integer(
      'PlayAnim.numLoops', value, 0, 4294967295)

  @property
  def startAt_ms(self):
    "uint_32 startAt_ms struct property."
    return self._startAt_ms

  @startAt_ms.setter
  def startAt_ms(self, value):
    self._startAt_ms = msgbuffers.validate_integer(
      'PlayAnim.startAt_ms', value, 0, 4294967295)

  @property
  def tag(self):
    "uint_8 tag struct property."
    return self._tag

  @tag.setter
  def tag(self, value):
    self._tag = msgbuffers.validate_integer(
      'PlayAnim.tag', value, 0, 255)

  @property
  def renderInEyeHue(self):
    "bool renderInEyeHue struct property."
    return self._renderInEyeHue

  @renderInEyeHue.setter
  def renderInEyeHue(self, value):
    self._renderInEyeHue = msgbuffers.validate_bool(
      'PlayAnim.renderInEyeHue', value)

  @property
  def animName(self):
    "string[uint_8] animName struct property."
    return self._animName

  @animName.setter
  def animName(self, value):
    self._animName = msgbuffers.validate_string(
      'PlayAnim.animName', value, 255)

  def __init__(self, numLoops=1, startAt_ms=0, tag=0, renderInEyeHue=True, animName=''):
    self.numLoops = numLoops
    self.startAt_ms = startAt_ms
    self.tag = tag
    self.renderInEyeHue = renderInEyeHue
    self.animName = animName

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

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

  def pack_to(self, writer):
    "Writes the current PlayAnim to the given BinaryWriter."
    writer.write(self._numLoops, 'I')
    writer.write(self._startAt_ms, 'I')
    writer.write(self._tag, 'B')
    writer.write(int(self._renderInEyeHue), 'b')
    writer.write_string(self._animName, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._numLoops == other._numLoops and
        self._startAt_ms == other._startAt_ms and
        self._tag == other._tag and
        self._renderInEyeHue == other._renderInEyeHue and
        self._animName == other._animName)
    else:
      return NotImplemented

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

  def __len__(self):
    return (msgbuffers.size(self._numLoops, 'I') +
      msgbuffers.size(self._startAt_ms, 'I') +
      msgbuffers.size(self._tag, 'B') +
      msgbuffers.size(self._renderInEyeHue, 'b') +
      msgbuffers.size_string(self._animName, 'B'))

  def __str__(self):
    return '{type}(numLoops={numLoops}, startAt_ms={startAt_ms}, tag={tag}, renderInEyeHue={renderInEyeHue}, animName={animName})'.format(
      type=type(self).__name__,
      numLoops=self._numLoops,
      startAt_ms=self._startAt_ms,
      tag=self._tag,
      renderInEyeHue=self._renderInEyeHue,
      animName=msgbuffers.shorten_string(self._animName))

  def __repr__(self):
    return '{type}(numLoops={numLoops}, startAt_ms={startAt_ms}, tag={tag}, renderInEyeHue={renderInEyeHue}, animName={animName})'.format(
      type=type(self).__name__,
      numLoops=repr(self._numLoops),
      startAt_ms=repr(self._startAt_ms),
      tag=repr(self._tag),
      renderInEyeHue=repr(self._renderInEyeHue),
      animName=repr(self._animName))

Anki.Vector.RobotInterface.PlayAnim = PlayAnim
del PlayAnim


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

  __slots__ = (
    '_tag', # uint_8
  )

  @property
  def tag(self):
    "uint_8 tag struct property."
    return self._tag

  @tag.setter
  def tag(self, value):
    self._tag = msgbuffers.validate_integer(
      'AbortAnimation.tag', value, 0, 255)

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

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

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

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

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

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

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

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

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

Anki.Vector.RobotInterface.AbortAnimation = AbortAnimation
del AbortAnimation


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

  __slots__ = (
    '_disableTimeout_ms', # uint_32
    '_enable',            # bool
  )

  @property
  def disableTimeout_ms(self):
    "uint_32 disableTimeout_ms struct property."
    return self._disableTimeout_ms

  @disableTimeout_ms.setter
  def disableTimeout_ms(self, value):
    self._disableTimeout_ms = msgbuffers.validate_integer(
      'EnableKeepFaceAlive.disableTimeout_ms', 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(
      'EnableKeepFaceAlive.enable', value)

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

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

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

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

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

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

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

Anki.Vector.RobotInterface.EnableKeepFaceAlive = EnableKeepFaceAlive
del EnableKeepFaceAlive


class SetKeepFaceAliveFocus(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(
      'SetKeepFaceAliveFocus.enable', value)

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

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

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

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


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

  __slots__ = (
    '_xPix',                  # float_32
    '_yPix',                  # float_32
    '_duration_ms',           # uint_32
    '_xMax',                  # float_32
    '_yMax',                  # float_32
    '_lookUpMaxScale',        # float_32
    '_lookDownMinScale',      # float_32
    '_outerEyeScaleIncrease', # float_32
    '_name',                  # string[uint_8]
  )

  @property
  def xPix(self):
    "float_32 xPix struct property."
    return self._xPix

  @xPix.setter
  def xPix(self, value):
    self._xPix = msgbuffers.validate_float(
      'AddOrUpdateEyeShift.xPix', value, 'f')

  @property
  def yPix(self):
    "float_32 yPix struct property."
    return self._yPix

  @yPix.setter
  def yPix(self, value):
    self._yPix = msgbuffers.validate_float(
      'AddOrUpdateEyeShift.yPix', value, 'f')

  @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(
      'AddOrUpdateEyeShift.duration_ms', value, 0, 4294967295)

  @property
  def xMax(self):
    "float_32 xMax struct property."
    return self._xMax

  @xMax.setter
  def xMax(self, value):
    self._xMax = msgbuffers.validate_float(
      'AddOrUpdateEyeShift.xMax', value, 'f')

  @property
  def yMax(self):
    "float_32 yMax struct property."
    return self._yMax

  @yMax.setter
  def yMax(self, value):
    self._yMax = msgbuffers.validate_float(
      'AddOrUpdateEyeShift.yMax', value, 'f')

  @property
  def lookUpMaxScale(self):
    "float_32 lookUpMaxScale struct property."
    return self._lookUpMaxScale

  @lookUpMaxScale.setter
  def lookUpMaxScale(self, value):
    self._lookUpMaxScale = msgbuffers.validate_float(
      'AddOrUpdateEyeShift.lookUpMaxScale', value, 'f')

  @property
  def lookDownMinScale(self):
    "float_32 lookDownMinScale struct property."
    return self._lookDownMinScale

  @lookDownMinScale.setter
  def lookDownMinScale(self, value):
    self._lookDownMinScale = msgbuffers.validate_float(
      'AddOrUpdateEyeShift.lookDownMinScale', value, 'f')

  @property
  def outerEyeScaleIncrease(self):
    "float_32 outerEyeScaleIncrease struct property."
    return self._outerEyeScaleIncrease

  @outerEyeScaleIncrease.setter
  def outerEyeScaleIncrease(self, value):
    self._outerEyeScaleIncrease = msgbuffers.validate_float(
      'AddOrUpdateEyeShift.outerEyeScaleIncrease', value, 'f')

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

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

  def __init__(self, xPix=0.0, yPix=0.0, duration_ms=0, xMax=0.0, yMax=0.0, lookUpMaxScale=0.0, lookDownMinScale=0.0, outerEyeScaleIncrease=0.0, name=''):
    self.xPix = xPix
    self.yPix = yPix
    self.duration_ms = duration_ms
    self.xMax = xMax
    self.yMax = yMax
    self.lookUpMaxScale = lookUpMaxScale
    self.lookDownMinScale = lookDownMinScale
    self.outerEyeScaleIncrease = outerEyeScaleIncrease
    self.name = name

  @classmethod
  def unpack(cls, buffer):
    "Reads a new AddOrUpdateEyeShift from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('AddOrUpdateEyeShift.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 AddOrUpdateEyeShift from the given BinaryReader."
    _xPix = reader.read('f')
    _yPix = reader.read('f')
    _duration_ms = reader.read('I')
    _xMax = reader.read('f')
    _yMax = reader.read('f')
    _lookUpMaxScale = reader.read('f')
    _lookDownMinScale = reader.read('f')
    _outerEyeScaleIncrease = reader.read('f')
    _name = reader.read_string('B')
    return cls(_xPix, _yPix, _duration_ms, _xMax, _yMax, _lookUpMaxScale, _lookDownMinScale, _outerEyeScaleIncrease, _name)

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

  def pack_to(self, writer):
    "Writes the current AddOrUpdateEyeShift to the given BinaryWriter."
    writer.write(self._xPix, 'f')
    writer.write(self._yPix, 'f')
    writer.write(self._duration_ms, 'I')
    writer.write(self._xMax, 'f')
    writer.write(self._yMax, 'f')
    writer.write(self._lookUpMaxScale, 'f')
    writer.write(self._lookDownMinScale, 'f')
    writer.write(self._outerEyeScaleIncrease, 'f')
    writer.write_string(self._name, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._xPix == other._xPix and
        self._yPix == other._yPix and
        self._duration_ms == other._duration_ms and
        self._xMax == other._xMax and
        self._yMax == other._yMax and
        self._lookUpMaxScale == other._lookUpMaxScale and
        self._lookDownMinScale == other._lookDownMinScale and
        self._outerEyeScaleIncrease == other._outerEyeScaleIncrease and
        self._name == other._name)
    else:
      return NotImplemented

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

  def __len__(self):
    return (msgbuffers.size(self._xPix, 'f') +
      msgbuffers.size(self._yPix, 'f') +
      msgbuffers.size(self._duration_ms, 'I') +
      msgbuffers.size(self._xMax, 'f') +
      msgbuffers.size(self._yMax, 'f') +
      msgbuffers.size(self._lookUpMaxScale, 'f') +
      msgbuffers.size(self._lookDownMinScale, 'f') +
      msgbuffers.size(self._outerEyeScaleIncrease, 'f') +
      msgbuffers.size_string(self._name, 'B'))

  def __str__(self):
    return '{type}(xPix={xPix}, yPix={yPix}, duration_ms={duration_ms}, xMax={xMax}, yMax={yMax}, lookUpMaxScale={lookUpMaxScale}, lookDownMinScale={lookDownMinScale}, outerEyeScaleIncrease={outerEyeScaleIncrease}, name={name})'.format(
      type=type(self).__name__,
      xPix=self._xPix,
      yPix=self._yPix,
      duration_ms=self._duration_ms,
      xMax=self._xMax,
      yMax=self._yMax,
      lookUpMaxScale=self._lookUpMaxScale,
      lookDownMinScale=self._lookDownMinScale,
      outerEyeScaleIncrease=self._outerEyeScaleIncrease,
      name=msgbuffers.shorten_string(self._name))

  def __repr__(self):
    return '{type}(xPix={xPix}, yPix={yPix}, duration_ms={duration_ms}, xMax={xMax}, yMax={yMax}, lookUpMaxScale={lookUpMaxScale}, lookDownMinScale={lookDownMinScale}, outerEyeScaleIncrease={outerEyeScaleIncrease}, name={name})'.format(
      type=type(self).__name__,
      xPix=repr(self._xPix),
      yPix=repr(self._yPix),
      duration_ms=repr(self._duration_ms),
      xMax=repr(self._xMax),
      yMax=repr(self._yMax),
      lookUpMaxScale=repr(self._lookUpMaxScale),
      lookDownMinScale=repr(self._lookDownMinScale),
      outerEyeScaleIncrease=repr(self._outerEyeScaleIncrease),
      name=repr(self._name))

Anki.Vector.RobotInterface.AddOrUpdateEyeShift = AddOrUpdateEyeShift
del AddOrUpdateEyeShift


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

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

  @property
  def disableTimeout_ms(self):
    "uint_32 disableTimeout_ms struct property."
    return self._disableTimeout_ms

  @disableTimeout_ms.setter
  def disableTimeout_ms(self, value):
    self._disableTimeout_ms = msgbuffers.validate_integer(
      'RemoveEyeShift.disableTimeout_ms', value, 0, 4294967295)

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

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

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

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

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

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

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

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

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

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

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

Anki.Vector.RobotInterface.RemoveEyeShift = RemoveEyeShift
del RemoveEyeShift


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

  __slots__ = (
    '_squintScaleX',  # float_32
    '_squintScaleY',  # float_32
    '_upperLidAngle', # float_32
    '_name',          # string[uint_8]
  )

  @property
  def squintScaleX(self):
    "float_32 squintScaleX struct property."
    return self._squintScaleX

  @squintScaleX.setter
  def squintScaleX(self, value):
    self._squintScaleX = msgbuffers.validate_float(
      'AddSquint.squintScaleX', value, 'f')

  @property
  def squintScaleY(self):
    "float_32 squintScaleY struct property."
    return self._squintScaleY

  @squintScaleY.setter
  def squintScaleY(self, value):
    self._squintScaleY = msgbuffers.validate_float(
      'AddSquint.squintScaleY', value, 'f')

  @property
  def upperLidAngle(self):
    "float_32 upperLidAngle struct property."
    return self._upperLidAngle

  @upperLidAngle.setter
  def upperLidAngle(self, value):
    self._upperLidAngle = msgbuffers.validate_float(
      'AddSquint.upperLidAngle', value, 'f')

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

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

  def __init__(self, squintScaleX=0.0, squintScaleY=0.0, upperLidAngle=0.0, name=''):
    self.squintScaleX = squintScaleX
    self.squintScaleY = squintScaleY
    self.upperLidAngle = upperLidAngle
    self.name = name

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

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

  def pack_to(self, writer):
    "Writes the current AddSquint to the given BinaryWriter."
    writer.write(self._squintScaleX, 'f')
    writer.write(self._squintScaleY, 'f')
    writer.write(self._upperLidAngle, 'f')
    writer.write_string(self._name, 'B')

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

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

  def __len__(self):
    return (msgbuffers.size(self._squintScaleX, 'f') +
      msgbuffers.size(self._squintScaleY, 'f') +
      msgbuffers.size(self._upperLidAngle, 'f') +
      msgbuffers.size_string(self._name, 'B'))

  def __str__(self):
    return '{type}(squintScaleX={squintScaleX}, squintScaleY={squintScaleY}, upperLidAngle={upperLidAngle}, name={name})'.format(
      type=type(self).__name__,
      squintScaleX=self._squintScaleX,
      squintScaleY=self._squintScaleY,
      upperLidAngle=self._upperLidAngle,
      name=msgbuffers.shorten_string(self._name))

  def __repr__(self):
    return '{type}(squintScaleX={squintScaleX}, squintScaleY={squintScaleY}, upperLidAngle={upperLidAngle}, name={name})'.format(
      type=type(self).__name__,
      squintScaleX=repr(self._squintScaleX),
      squintScaleY=repr(self._squintScaleY),
      upperLidAngle=repr(self._upperLidAngle),
      name=repr(self._name))

Anki.Vector.RobotInterface.AddSquint = AddSquint
del AddSquint


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

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

  @property
  def disableTimeout_ms(self):
    "uint_32 disableTimeout_ms struct property."
    return self._disableTimeout_ms

  @disableTimeout_ms.setter
  def disableTimeout_ms(self, value):
    self._disableTimeout_ms = msgbuffers.validate_integer(
      'RemoveSquint.disableTimeout_ms', value, 0, 4294967295)

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

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

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

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

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

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

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

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

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

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

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

Anki.Vector.RobotInterface.RemoveSquint = RemoveSquint
del RemoveSquint


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

  __slots__ = (
    '_trackLockState', # uint_8
  )

  @property
  def trackLockState(self):
    "uint_8 trackLockState struct property."
    return self._trackLockState

  @trackLockState.setter
  def trackLockState(self, value):
    self._trackLockState = msgbuffers.validate_integer(
      'SetFullAnimTrackLockState.trackLockState', value, 0, 255)

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

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

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

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

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

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

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

Anki.Vector.RobotInterface.SetFullAnimTrackLockState = SetFullAnimTrackLockState
del SetFullAnimTrackLockState


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

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

  @property
  def animPath(self):
    "string[uint_8] animPath struct property."
    return self._animPath

  @animPath.setter
  def animPath(self, value):
    self._animPath = msgbuffers.validate_string(
      'AddAnim.animPath', value, 255)

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

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

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

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

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

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

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

Anki.Vector.RobotInterface.AddAnim = AddAnim
del AddAnim


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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


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

  __slots__ = (
    '_offset_deg',       # int_16
    '_speed_degPerSec',  # int_16
    '_accel_degPerSec2', # int_16
    '_decel_degPerSec2', # int_16
    '_tolerance_deg',    # uint_16
    '_numHalfRevs',      # uint_16
    '_useShortestDir',   # bool
  )

  @property
  def offset_deg(self):
    "int_16 offset_deg struct property."
    return self._offset_deg

  @offset_deg.setter
  def offset_deg(self, value):
    self._offset_deg = msgbuffers.validate_integer(
      'TurnToRecordedHeading.offset_deg', value, -32768, 32767)

  @property
  def speed_degPerSec(self):
    "int_16 speed_degPerSec struct property."
    return self._speed_degPerSec

  @speed_degPerSec.setter
  def speed_degPerSec(self, value):
    self._speed_degPerSec = msgbuffers.validate_integer(
      'TurnToRecordedHeading.speed_degPerSec', value, -32768, 32767)

  @property
  def accel_degPerSec2(self):
    "int_16 accel_degPerSec2 struct property."
    return self._accel_degPerSec2

  @accel_degPerSec2.setter
  def accel_degPerSec2(self, value):
    self._accel_degPerSec2 = msgbuffers.validate_integer(
      'TurnToRecordedHeading.accel_degPerSec2', value, -32768, 32767)

  @property
  def decel_degPerSec2(self):
    "int_16 decel_degPerSec2 struct property."
    return self._decel_degPerSec2

  @decel_degPerSec2.setter
  def decel_degPerSec2(self, value):
    self._decel_degPerSec2 = msgbuffers.validate_integer(
      'TurnToRecordedHeading.decel_degPerSec2', value, -32768, 32767)

  @property
  def tolerance_deg(self):
    "uint_16 tolerance_deg struct property."
    return self._tolerance_deg

  @tolerance_deg.setter
  def tolerance_deg(self, value):
    self._tolerance_deg = msgbuffers.validate_integer(
      'TurnToRecordedHeading.tolerance_deg', value, 0, 65535)

  @property
  def numHalfRevs(self):
    "uint_16 numHalfRevs struct property."
    return self._numHalfRevs

  @numHalfRevs.setter
  def numHalfRevs(self, value):
    self._numHalfRevs = msgbuffers.validate_integer(
      'TurnToRecordedHeading.numHalfRevs', value, 0, 65535)

  @property
  def useShortestDir(self):
    "bool useShortestDir struct property."
    return self._useShortestDir

  @useShortestDir.setter
  def useShortestDir(self, value):
    self._useShortestDir = msgbuffers.validate_bool(
      'TurnToRecordedHeading.useShortestDir', value)

  def __init__(self, offset_deg=0, speed_degPerSec=0, accel_degPerSec2=0, decel_degPerSec2=0, tolerance_deg=0, numHalfRevs=0, useShortestDir=False):
    self.offset_deg = offset_deg
    self.speed_degPerSec = speed_degPerSec
    self.accel_degPerSec2 = accel_degPerSec2
    self.decel_degPerSec2 = decel_degPerSec2
    self.tolerance_deg = tolerance_deg
    self.numHalfRevs = numHalfRevs
    self.useShortestDir = useShortestDir

  @classmethod
  def unpack(cls, buffer):
    "Reads a new TurnToRecordedHeading from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('TurnToRecordedHeading.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 TurnToRecordedHeading from the given BinaryReader."
    _offset_deg = reader.read('h')
    _speed_degPerSec = reader.read('h')
    _accel_degPerSec2 = reader.read('h')
    _decel_degPerSec2 = reader.read('h')
    _tolerance_deg = reader.read('H')
    _numHalfRevs = reader.read('H')
    _useShortestDir = bool(reader.read('b'))
    return cls(_offset_deg, _speed_degPerSec, _accel_degPerSec2, _decel_degPerSec2, _tolerance_deg, _numHalfRevs, _useShortestDir)

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

  def pack_to(self, writer):
    "Writes the current TurnToRecordedHeading to the given BinaryWriter."
    writer.write(self._offset_deg, 'h')
    writer.write(self._speed_degPerSec, 'h')
    writer.write(self._accel_degPerSec2, 'h')
    writer.write(self._decel_degPerSec2, 'h')
    writer.write(self._tolerance_deg, 'H')
    writer.write(self._numHalfRevs, 'H')
    writer.write(int(self._useShortestDir), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._offset_deg == other._offset_deg and
        self._speed_degPerSec == other._speed_degPerSec and
        self._accel_degPerSec2 == other._accel_degPerSec2 and
        self._decel_degPerSec2 == other._decel_degPerSec2 and
        self._tolerance_deg == other._tolerance_deg and
        self._numHalfRevs == other._numHalfRevs and
        self._useShortestDir == other._useShortestDir)
    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._offset_deg, 'h') +
      msgbuffers.size(self._speed_degPerSec, 'h') +
      msgbuffers.size(self._accel_degPerSec2, 'h') +
      msgbuffers.size(self._decel_degPerSec2, 'h') +
      msgbuffers.size(self._tolerance_deg, 'H') +
      msgbuffers.size(self._numHalfRevs, 'H') +
      msgbuffers.size(self._useShortestDir, 'b'))

  def __str__(self):
    return '{type}(offset_deg={offset_deg}, speed_degPerSec={speed_degPerSec}, accel_degPerSec2={accel_degPerSec2}, decel_degPerSec2={decel_degPerSec2}, tolerance_deg={tolerance_deg}, numHalfRevs={numHalfRevs}, useShortestDir={useShortestDir})'.format(
      type=type(self).__name__,
      offset_deg=self._offset_deg,
      speed_degPerSec=self._speed_degPerSec,
      accel_degPerSec2=self._accel_degPerSec2,
      decel_degPerSec2=self._decel_degPerSec2,
      tolerance_deg=self._tolerance_deg,
      numHalfRevs=self._numHalfRevs,
      useShortestDir=self._useShortestDir)

  def __repr__(self):
    return '{type}(offset_deg={offset_deg}, speed_degPerSec={speed_degPerSec}, accel_degPerSec2={accel_degPerSec2}, decel_degPerSec2={decel_degPerSec2}, tolerance_deg={tolerance_deg}, numHalfRevs={numHalfRevs}, useShortestDir={useShortestDir})'.format(
      type=type(self).__name__,
      offset_deg=repr(self._offset_deg),
      speed_degPerSec=repr(self._speed_degPerSec),
      accel_degPerSec2=repr(self._accel_degPerSec2),
      decel_degPerSec2=repr(self._decel_degPerSec2),
      tolerance_deg=repr(self._tolerance_deg),
      numHalfRevs=repr(self._numHalfRevs),
      useShortestDir=repr(self._useShortestDir))

Anki.Vector.RobotInterface.TurnToRecordedHeading = TurnToRecordedHeading
del TurnToRecordedHeading


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

  __slots__ = (
    '_lights', # LightState[3]
    '_layer',  # uint_8
  )

  @property
  def lights(self):
    "LightState[3] lights struct property."
    return self._lights

  @lights.setter
  def lights(self, value):
    self._lights = msgbuffers.validate_farray(
      'SetBackpackLights.lights', value, 3,
      lambda name, value_inner: msgbuffers.validate_object(
        name, value_inner, Anki.Vector.LightState))

  @property
  def layer(self):
    "uint_8 layer struct property."
    return self._layer

  @layer.setter
  def layer(self, value):
    self._layer = msgbuffers.validate_integer(
      'SetBackpackLights.layer', value, 0, 255)

  def __init__(self, lights=(Anki.Vector.LightState(),) * 3, layer=0):
    self.lights = lights
    self.layer = layer

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

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

  def pack_to(self, writer):
    "Writes the current SetBackpackLights to the given BinaryWriter."
    writer.write_object_farray(self._lights, 3)
    writer.write(self._layer, 'B')

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

  def __str__(self):
    return '{type}(lights={lights}, layer={layer})'.format(
      type=type(self).__name__,
      lights=msgbuffers.shorten_sequence(self._lights),
      layer=self._layer)

  def __repr__(self):
    return '{type}(lights={lights}, layer={layer})'.format(
      type=type(self).__name__,
      lights=repr(self._lights),
      layer=repr(self._layer))

Anki.Vector.RobotInterface.SetBackpackLights = SetBackpackLights
del SetBackpackLights


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

  __slots__ = (
    '_light', # Anki.Vector.LightState
  )

  @property
  def light(self):
    "Anki.Vector.LightState light struct property."
    return self._light

  @light.setter
  def light(self, value):
    self._light = msgbuffers.validate_object(
      'SetSystemLight.light', value, Anki.Vector.LightState)

  def __init__(self, light=Anki.Vector.LightState()):
    self.light = light

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

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

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

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

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

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

Anki.Vector.RobotInterface.SetSystemLight = SetSystemLight
del SetSystemLight


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

  __slots__ = (
    '_duration_ms', # uint_32
    '_runFFT',      # bool
    '_path',        # string[uint_8]
  )

  @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(
      'StartRecordingMicsRaw.duration_ms', value, 0, 4294967295)

  @property
  def runFFT(self):
    "bool runFFT struct property."
    return self._runFFT

  @runFFT.setter
  def runFFT(self, value):
    self._runFFT = msgbuffers.validate_bool(
      'StartRecordingMicsRaw.runFFT', 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(
      'StartRecordingMicsRaw.path', value, 255)

  def __init__(self, duration_ms=0, runFFT=False, path=''):
    self.duration_ms = duration_ms
    self.runFFT = runFFT
    self.path = path

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

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

  def pack_to(self, writer):
    "Writes the current StartRecordingMicsRaw to the given BinaryWriter."
    writer.write(self._duration_ms, 'I')
    writer.write(int(self._runFFT), 'b')
    writer.write_string(self._path, 'B')

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

  def __str__(self):
    return '{type}(duration_ms={duration_ms}, runFFT={runFFT}, path={path})'.format(
      type=type(self).__name__,
      duration_ms=self._duration_ms,
      runFFT=self._runFFT,
      path=msgbuffers.shorten_string(self._path))

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

Anki.Vector.RobotInterface.StartRecordingMicsRaw = StartRecordingMicsRaw
del StartRecordingMicsRaw


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

  __slots__ = (
    '_duration_ms', # uint_32
    '_path',        # string[uint_8]
  )

  @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(
      'StartRecordingMicsProcessed.duration_ms', value, 0, 4294967295)

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

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

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

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

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

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

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

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

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

Anki.Vector.RobotInterface.StartRecordingMicsProcessed = StartRecordingMicsProcessed
del StartRecordingMicsProcessed


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

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

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

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

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

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

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

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

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

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

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

Anki.Vector.RobotInterface.StartPlaybackAudio = StartPlaybackAudio
del StartPlaybackAudio


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

  __slots__ = (
    '_streamType',               # uint_8
    '_playGetInFromAnimProcess', # bool
  )

  @property
  def streamType(self):
    "uint_8 streamType struct property."
    return self._streamType

  @streamType.setter
  def streamType(self, value):
    self._streamType = msgbuffers.validate_integer(
      'StartWakeWordlessStreaming.streamType', value, 0, 255)

  @property
  def playGetInFromAnimProcess(self):
    "bool playGetInFromAnimProcess struct property."
    return self._playGetInFromAnimProcess

  @playGetInFromAnimProcess.setter
  def playGetInFromAnimProcess(self, value):
    self._playGetInFromAnimProcess = msgbuffers.validate_bool(
      'StartWakeWordlessStreaming.playGetInFromAnimProcess', value)

  def __init__(self, streamType=0, playGetInFromAnimProcess=False):
    self.streamType = streamType
    self.playGetInFromAnimProcess = playGetInFromAnimProcess

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

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

  def pack_to(self, writer):
    "Writes the current StartWakeWordlessStreaming to the given BinaryWriter."
    writer.write(self._streamType, 'B')
    writer.write(int(self._playGetInFromAnimProcess), 'b')

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

  def __str__(self):
    return '{type}(streamType={streamType}, playGetInFromAnimProcess={playGetInFromAnimProcess})'.format(
      type=type(self).__name__,
      streamType=self._streamType,
      playGetInFromAnimProcess=self._playGetInFromAnimProcess)

  def __repr__(self):
    return '{type}(streamType={streamType}, playGetInFromAnimProcess={playGetInFromAnimProcess})'.format(
      type=type(self).__name__,
      streamType=repr(self._streamType),
      playGetInFromAnimProcess=repr(self._playGetInFromAnimProcess))

Anki.Vector.RobotInterface.StartWakeWordlessStreaming = StartWakeWordlessStreaming
del StartWakeWordlessStreaming


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

  __slots__ = (
    '_postAudioEvent',                  # Anki.AudioEngine.Multiplexer.PostAudioEvent
    '_minStreamingDuration_ms',         # int_32
    '_shouldTriggerWordStartStream',    # bool
    '_shouldTriggerWordSimulateStream', # bool
    '_getInAnimationTag',               # uint_8
    '_getInAnimationName',              # string[uint_8]
  )

  @property
  def postAudioEvent(self):
    "Anki.AudioEngine.Multiplexer.PostAudioEvent postAudioEvent struct property."
    return self._postAudioEvent

  @postAudioEvent.setter
  def postAudioEvent(self, value):
    self._postAudioEvent = msgbuffers.validate_object(
      'SetTriggerWordResponse.postAudioEvent', value, Anki.AudioEngine.Multiplexer.PostAudioEvent)

  @property
  def minStreamingDuration_ms(self):
    "int_32 minStreamingDuration_ms struct property."
    return self._minStreamingDuration_ms

  @minStreamingDuration_ms.setter
  def minStreamingDuration_ms(self, value):
    self._minStreamingDuration_ms = msgbuffers.validate_integer(
      'SetTriggerWordResponse.minStreamingDuration_ms', value, -2147483648, 2147483647)

  @property
  def shouldTriggerWordStartStream(self):
    "bool shouldTriggerWordStartStream struct property."
    return self._shouldTriggerWordStartStream

  @shouldTriggerWordStartStream.setter
  def shouldTriggerWordStartStream(self, value):
    self._shouldTriggerWordStartStream = msgbuffers.validate_bool(
      'SetTriggerWordResponse.shouldTriggerWordStartStream', value)

  @property
  def shouldTriggerWordSimulateStream(self):
    "bool shouldTriggerWordSimulateStream struct property."
    return self._shouldTriggerWordSimulateStream

  @shouldTriggerWordSimulateStream.setter
  def shouldTriggerWordSimulateStream(self, value):
    self._shouldTriggerWordSimulateStream = msgbuffers.validate_bool(
      'SetTriggerWordResponse.shouldTriggerWordSimulateStream', value)

  @property
  def getInAnimationTag(self):
    "uint_8 getInAnimationTag struct property."
    return self._getInAnimationTag

  @getInAnimationTag.setter
  def getInAnimationTag(self, value):
    self._getInAnimationTag = msgbuffers.validate_integer(
      'SetTriggerWordResponse.getInAnimationTag', value, 0, 255)

  @property
  def getInAnimationName(self):
    "string[uint_8] getInAnimationName struct property."
    return self._getInAnimationName

  @getInAnimationName.setter
  def getInAnimationName(self, value):
    self._getInAnimationName = msgbuffers.validate_string(
      'SetTriggerWordResponse.getInAnimationName', value, 255)

  def __init__(self, postAudioEvent=Anki.AudioEngine.Multiplexer.PostAudioEvent(), minStreamingDuration_ms=-1, shouldTriggerWordStartStream=False, shouldTriggerWordSimulateStream=False, getInAnimationTag=0, getInAnimationName=''):
    self.postAudioEvent = postAudioEvent
    self.minStreamingDuration_ms = minStreamingDuration_ms
    self.shouldTriggerWordStartStream = shouldTriggerWordStartStream
    self.shouldTriggerWordSimulateStream = shouldTriggerWordSimulateStream
    self.getInAnimationTag = getInAnimationTag
    self.getInAnimationName = getInAnimationName

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetTriggerWordResponse from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetTriggerWordResponse.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 SetTriggerWordResponse from the given BinaryReader."
    _postAudioEvent = reader.read_object(Anki.AudioEngine.Multiplexer.PostAudioEvent.unpack_from)
    _minStreamingDuration_ms = reader.read('i')
    _shouldTriggerWordStartStream = bool(reader.read('b'))
    _shouldTriggerWordSimulateStream = bool(reader.read('b'))
    _getInAnimationTag = reader.read('B')
    _getInAnimationName = reader.read_string('B')
    return cls(_postAudioEvent, _minStreamingDuration_ms, _shouldTriggerWordStartStream, _shouldTriggerWordSimulateStream, _getInAnimationTag, _getInAnimationName)

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

  def pack_to(self, writer):
    "Writes the current SetTriggerWordResponse to the given BinaryWriter."
    writer.write_object(self._postAudioEvent)
    writer.write(self._minStreamingDuration_ms, 'i')
    writer.write(int(self._shouldTriggerWordStartStream), 'b')
    writer.write(int(self._shouldTriggerWordSimulateStream), 'b')
    writer.write(self._getInAnimationTag, 'B')
    writer.write_string(self._getInAnimationName, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._postAudioEvent == other._postAudioEvent and
        self._minStreamingDuration_ms == other._minStreamingDuration_ms and
        self._shouldTriggerWordStartStream == other._shouldTriggerWordStartStream and
        self._shouldTriggerWordSimulateStream == other._shouldTriggerWordSimulateStream and
        self._getInAnimationTag == other._getInAnimationTag and
        self._getInAnimationName == other._getInAnimationName)
    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._postAudioEvent) +
      msgbuffers.size(self._minStreamingDuration_ms, 'i') +
      msgbuffers.size(self._shouldTriggerWordStartStream, 'b') +
      msgbuffers.size(self._shouldTriggerWordSimulateStream, 'b') +
      msgbuffers.size(self._getInAnimationTag, 'B') +
      msgbuffers.size_string(self._getInAnimationName, 'B'))

  def __str__(self):
    return '{type}(postAudioEvent={postAudioEvent}, minStreamingDuration_ms={minStreamingDuration_ms}, shouldTriggerWordStartStream={shouldTriggerWordStartStream}, shouldTriggerWordSimulateStream={shouldTriggerWordSimulateStream}, getInAnimationTag={getInAnimationTag}, getInAnimationName={getInAnimationName})'.format(
      type=type(self).__name__,
      postAudioEvent=self._postAudioEvent,
      minStreamingDuration_ms=self._minStreamingDuration_ms,
      shouldTriggerWordStartStream=self._shouldTriggerWordStartStream,
      shouldTriggerWordSimulateStream=self._shouldTriggerWordSimulateStream,
      getInAnimationTag=self._getInAnimationTag,
      getInAnimationName=msgbuffers.shorten_string(self._getInAnimationName))

  def __repr__(self):
    return '{type}(postAudioEvent={postAudioEvent}, minStreamingDuration_ms={minStreamingDuration_ms}, shouldTriggerWordStartStream={shouldTriggerWordStartStream}, shouldTriggerWordSimulateStream={shouldTriggerWordSimulateStream}, getInAnimationTag={getInAnimationTag}, getInAnimationName={getInAnimationName})'.format(
      type=type(self).__name__,
      postAudioEvent=repr(self._postAudioEvent),
      minStreamingDuration_ms=repr(self._minStreamingDuration_ms),
      shouldTriggerWordStartStream=repr(self._shouldTriggerWordStartStream),
      shouldTriggerWordSimulateStream=repr(self._shouldTriggerWordSimulateStream),
      getInAnimationTag=repr(self._getInAnimationTag),
      getInAnimationName=repr(self._getInAnimationName))

Anki.Vector.RobotInterface.SetTriggerWordResponse = SetTriggerWordResponse
del SetTriggerWordResponse


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

  __slots__ = (
    '_postAudioEvents',   # PostAudioEvent[4]
    '_getInAnimTags',     # uint_8[4]
    '_csvGetInAnimNames', # string[uint_8]
  )

  @property
  def postAudioEvents(self):
    "PostAudioEvent[4] postAudioEvents struct property."
    return self._postAudioEvents

  @postAudioEvents.setter
  def postAudioEvents(self, value):
    self._postAudioEvents = msgbuffers.validate_farray(
      'SetAlexaUXResponses.postAudioEvents', value, 4,
      lambda name, value_inner: msgbuffers.validate_object(
        name, value_inner, Anki.AudioEngine.Multiplexer.PostAudioEvent))

  @property
  def getInAnimTags(self):
    "uint_8[4] getInAnimTags struct property."
    return self._getInAnimTags

  @getInAnimTags.setter
  def getInAnimTags(self, value):
    self._getInAnimTags = msgbuffers.validate_farray(
      'SetAlexaUXResponses.getInAnimTags', value, 4,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 255))

  @property
  def csvGetInAnimNames(self):
    "string[uint_8] csvGetInAnimNames struct property."
    return self._csvGetInAnimNames

  @csvGetInAnimNames.setter
  def csvGetInAnimNames(self, value):
    self._csvGetInAnimNames = msgbuffers.validate_string(
      'SetAlexaUXResponses.csvGetInAnimNames', value, 255)

  def __init__(self, postAudioEvents=(Anki.AudioEngine.Multiplexer.PostAudioEvent(),) * 4, getInAnimTags=(0,) * 4, csvGetInAnimNames=''):
    self.postAudioEvents = postAudioEvents
    self.getInAnimTags = getInAnimTags
    self.csvGetInAnimNames = csvGetInAnimNames

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SetAlexaUXResponses from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SetAlexaUXResponses.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 SetAlexaUXResponses from the given BinaryReader."
    _postAudioEvents = reader.read_object_farray(Anki.AudioEngine.Multiplexer.PostAudioEvent.unpack_from, 4)
    _getInAnimTags = reader.read_farray('B', 4)
    _csvGetInAnimNames = reader.read_string('B')
    return cls(_postAudioEvents, _getInAnimTags, _csvGetInAnimNames)

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

  def pack_to(self, writer):
    "Writes the current SetAlexaUXResponses to the given BinaryWriter."
    writer.write_object_farray(self._postAudioEvents, 4)
    writer.write_farray(self._getInAnimTags, 'B', 4)
    writer.write_string(self._csvGetInAnimNames, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._postAudioEvents == other._postAudioEvents and
        self._getInAnimTags == other._getInAnimTags and
        self._csvGetInAnimNames == other._csvGetInAnimNames)
    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_farray(self._postAudioEvents, 4) +
      msgbuffers.size_farray(self._getInAnimTags, 'B', 4) +
      msgbuffers.size_string(self._csvGetInAnimNames, 'B'))

  def __str__(self):
    return '{type}(postAudioEvents={postAudioEvents}, getInAnimTags={getInAnimTags}, csvGetInAnimNames={csvGetInAnimNames})'.format(
      type=type(self).__name__,
      postAudioEvents=msgbuffers.shorten_sequence(self._postAudioEvents),
      getInAnimTags=msgbuffers.shorten_sequence(self._getInAnimTags),
      csvGetInAnimNames=msgbuffers.shorten_string(self._csvGetInAnimNames))

  def __repr__(self):
    return '{type}(postAudioEvents={postAudioEvents}, getInAnimTags={getInAnimTags}, csvGetInAnimNames={csvGetInAnimNames})'.format(
      type=type(self).__name__,
      postAudioEvents=repr(self._postAudioEvents),
      getInAnimTags=repr(self._getInAnimTags),
      csvGetInAnimNames=repr(self._csvGetInAnimNames))

Anki.Vector.RobotInterface.SetAlexaUXResponses = SetAlexaUXResponses
del SetAlexaUXResponses


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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


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

  __slots__ = (
    '_optedIn', # bool
  )

  @property
  def optedIn(self):
    "bool optedIn struct property."
    return self._optedIn

  @optedIn.setter
  def optedIn(self, value):
    self._optedIn = msgbuffers.validate_bool(
      'SetAlexaUsage.optedIn', value)

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

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

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

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

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

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

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

Anki.Vector.RobotInterface.SetAlexaUsage = SetAlexaUsage
del SetAlexaUsage


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

  __slots__ = (
    '_r', # uint_8
    '_g', # uint_8
    '_b', # uint_8
  )

  @property
  def r(self):
    "uint_8 r struct property."
    return self._r

  @r.setter
  def r(self, value):
    self._r = msgbuffers.validate_integer(
      'ColorRGB.r', value, 0, 255)

  @property
  def g(self):
    "uint_8 g struct property."
    return self._g

  @g.setter
  def g(self, value):
    self._g = msgbuffers.validate_integer(
      'ColorRGB.g', value, 0, 255)

  @property
  def b(self):
    "uint_8 b struct property."
    return self._b

  @b.setter
  def b(self, value):
    self._b = msgbuffers.validate_integer(
      'ColorRGB.b', value, 0, 255)

  def __init__(self, r=0, g=0, b=0):
    self.r = r
    self.g = g
    self.b = b

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

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

  def pack_to(self, writer):
    "Writes the current ColorRGB to the given BinaryWriter."
    writer.write(self._r, 'B')
    writer.write(self._g, 'B')
    writer.write(self._b, 'B')

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

  def __str__(self):
    return '{type}(r={r}, g={g}, b={b})'.format(
      type=type(self).__name__,
      r=self._r,
      g=self._g,
      b=self._b)

  def __repr__(self):
    return '{type}(r={r}, g={g}, b={b})'.format(
      type=type(self).__name__,
      r=repr(self._r),
      g=repr(self._g),
      b=repr(self._b))

Anki.Vector.RobotInterface.ColorRGB = ColorRGB
del ColorRGB


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

  __slots__ = (
    '_drawNow',   # bool
    '_textColor', # Anki.Vector.RobotInterface.ColorRGB
    '_bgColor',   # Anki.Vector.RobotInterface.ColorRGB
    '_text',      # string[uint_8]
  )

  @property
  def drawNow(self):
    "bool drawNow struct property."
    return self._drawNow

  @drawNow.setter
  def drawNow(self, value):
    self._drawNow = msgbuffers.validate_bool(
      'DrawTextOnScreen.drawNow', value)

  @property
  def textColor(self):
    "Anki.Vector.RobotInterface.ColorRGB textColor struct property."
    return self._textColor

  @textColor.setter
  def textColor(self, value):
    self._textColor = msgbuffers.validate_object(
      'DrawTextOnScreen.textColor', value, Anki.Vector.RobotInterface.ColorRGB)

  @property
  def bgColor(self):
    "Anki.Vector.RobotInterface.ColorRGB bgColor struct property."
    return self._bgColor

  @bgColor.setter
  def bgColor(self, value):
    self._bgColor = msgbuffers.validate_object(
      'DrawTextOnScreen.bgColor', value, Anki.Vector.RobotInterface.ColorRGB)

  @property
  def text(self):
    "string[uint_8] text struct property."
    return self._text

  @text.setter
  def text(self, value):
    self._text = msgbuffers.validate_string(
      'DrawTextOnScreen.text', value, 255)

  def __init__(self, drawNow=False, textColor=Anki.Vector.RobotInterface.ColorRGB(), bgColor=Anki.Vector.RobotInterface.ColorRGB(), text=''):
    self.drawNow = drawNow
    self.textColor = textColor
    self.bgColor = bgColor
    self.text = text

  @classmethod
  def unpack(cls, buffer):
    "Reads a new DrawTextOnScreen from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('DrawTextOnScreen.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 DrawTextOnScreen from the given BinaryReader."
    _drawNow = bool(reader.read('b'))
    _textColor = reader.read_object(Anki.Vector.RobotInterface.ColorRGB.unpack_from)
    _bgColor = reader.read_object(Anki.Vector.RobotInterface.ColorRGB.unpack_from)
    _text = reader.read_string('B')
    return cls(_drawNow, _textColor, _bgColor, _text)

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

  def pack_to(self, writer):
    "Writes the current DrawTextOnScreen to the given BinaryWriter."
    writer.write(int(self._drawNow), 'b')
    writer.write_object(self._textColor)
    writer.write_object(self._bgColor)
    writer.write_string(self._text, 'B')

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

  def __str__(self):
    return '{type}(drawNow={drawNow}, textColor={textColor}, bgColor={bgColor}, text={text})'.format(
      type=type(self).__name__,
      drawNow=self._drawNow,
      textColor=self._textColor,
      bgColor=self._bgColor,
      text=msgbuffers.shorten_string(self._text))

  def __repr__(self):
    return '{type}(drawNow={drawNow}, textColor={textColor}, bgColor={bgColor}, text={text})'.format(
      type=type(self).__name__,
      drawNow=repr(self._drawNow),
      textColor=repr(self._textColor),
      bgColor=repr(self._bgColor),
      text=repr(self._text))

Anki.Vector.RobotInterface.DrawTextOnScreen = DrawTextOnScreen
del DrawTextOnScreen


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

  __slots__ = (
    '_show', # bool
  )

  @property
  def show(self):
    "bool show struct property."
    return self._show

  @show.setter
  def show(self, value):
    self._show = msgbuffers.validate_bool(
      'ShowUrlFace.show', value)

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

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

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

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

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

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

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

Anki.Vector.RobotInterface.ShowUrlFace = ShowUrlFace
del ShowUrlFace


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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


class EnableMirrorModeScreen(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(
      'EnableMirrorModeScreen.enable', value)

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

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

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

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


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

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

  @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)

  def __init__(self, faceParams=Anki.Vector.ProceduralFaceParameters(), duration_ms=0):
    self.faceParams = faceParams
    self.duration_ms = duration_ms

  @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')
    return cls(_faceParams, _duration_ms)

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

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

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

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

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

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

Anki.Vector.RobotInterface.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.RobotInterface.SetFaceHue = SetFaceHue
del SetFaceHue


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

  __slots__ = (
    '_saturation', # float_32
  )

  @property
  def saturation(self):
    "float_32 saturation struct property."
    return self._saturation

  @saturation.setter
  def saturation(self, value):
    self._saturation = msgbuffers.validate_float(
      'SetFaceSaturation.saturation', value, 'f')

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

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

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

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

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

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

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

Anki.Vector.RobotInterface.SetFaceSaturation = SetFaceSaturation
del SetFaceSaturation


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

  __slots__ = (
    '_isAlexa', # bool
  )

  @property
  def isAlexa(self):
    "bool isAlexa struct property."
    return self._isAlexa

  @isAlexa.setter
  def isAlexa(self, value):
    self._isAlexa = msgbuffers.validate_bool(
      'SetButtonWakeWord.isAlexa', value)

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

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

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

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

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

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

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

Anki.Vector.RobotInterface.SetButtonWakeWord = SetButtonWakeWord
del SetButtonWakeWord


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

  __slots__ = (
    '_spriteBoxName',   # Anki.Vision.SpriteBoxName
    '_padding',         # uint_8
    '_remappedAssetID', # uint_16
  )

  @property
  def spriteBoxName(self):
    "Anki.Vision.SpriteBoxName spriteBoxName struct property."
    return self._spriteBoxName

  @spriteBoxName.setter
  def spriteBoxName(self, value):
    self._spriteBoxName = msgbuffers.validate_integer(
      'SpriteBoxRemap.spriteBoxName', value, 0, 255)

  @property
  def padding(self):
    "uint_8 padding struct property."
    return self._padding

  @padding.setter
  def padding(self, value):
    self._padding = msgbuffers.validate_integer(
      'SpriteBoxRemap.padding', value, 0, 255)

  @property
  def remappedAssetID(self):
    "uint_16 remappedAssetID struct property."
    return self._remappedAssetID

  @remappedAssetID.setter
  def remappedAssetID(self, value):
    self._remappedAssetID = msgbuffers.validate_integer(
      'SpriteBoxRemap.remappedAssetID', value, 0, 65535)

  def __init__(self, spriteBoxName=Anki.Vision.SpriteBoxName.SpriteBox_1, padding=0, remappedAssetID=0):
    self.spriteBoxName = spriteBoxName
    self.padding = padding
    self.remappedAssetID = remappedAssetID

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

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

  def pack_to(self, writer):
    "Writes the current SpriteBoxRemap to the given BinaryWriter."
    writer.write(self._spriteBoxName, 'B')
    writer.write(self._padding, 'B')
    writer.write(self._remappedAssetID, 'H')

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

  def __str__(self):
    return '{type}(spriteBoxName={spriteBoxName}, padding={padding}, remappedAssetID={remappedAssetID})'.format(
      type=type(self).__name__,
      spriteBoxName=self._spriteBoxName,
      padding=self._padding,
      remappedAssetID=self._remappedAssetID)

  def __repr__(self):
    return '{type}(spriteBoxName={spriteBoxName}, padding={padding}, remappedAssetID={remappedAssetID})'.format(
      type=type(self).__name__,
      spriteBoxName=repr(self._spriteBoxName),
      padding=repr(self._padding),
      remappedAssetID=repr(self._remappedAssetID))

Anki.Vector.RobotInterface.SpriteBoxRemap = SpriteBoxRemap
del SpriteBoxRemap


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

  __slots__ = (
    '_tag',                 # uint_8
    '_numRemaps',           # uint_8
    '_spriteBoxRemaps',     # SpriteBoxRemap[150]
    '_lockFaceAtEndOfAnim', # bool
    '_animName',            # string[uint_8]
  )

  @property
  def tag(self):
    "uint_8 tag struct property."
    return self._tag

  @tag.setter
  def tag(self, value):
    self._tag = msgbuffers.validate_integer(
      'PlayAnimWithSpriteBoxRemaps.tag', value, 0, 255)

  @property
  def numRemaps(self):
    "uint_8 numRemaps struct property."
    return self._numRemaps

  @numRemaps.setter
  def numRemaps(self, value):
    self._numRemaps = msgbuffers.validate_integer(
      'PlayAnimWithSpriteBoxRemaps.numRemaps', value, 0, 255)

  @property
  def spriteBoxRemaps(self):
    "SpriteBoxRemap[150] spriteBoxRemaps struct property."
    return self._spriteBoxRemaps

  @spriteBoxRemaps.setter
  def spriteBoxRemaps(self, value):
    self._spriteBoxRemaps = msgbuffers.validate_farray(
      'PlayAnimWithSpriteBoxRemaps.spriteBoxRemaps', value, 150,
      lambda name, value_inner: msgbuffers.validate_object(
        name, value_inner, Anki.Vector.RobotInterface.SpriteBoxRemap))

  @property
  def lockFaceAtEndOfAnim(self):
    "bool lockFaceAtEndOfAnim struct property."
    return self._lockFaceAtEndOfAnim

  @lockFaceAtEndOfAnim.setter
  def lockFaceAtEndOfAnim(self, value):
    self._lockFaceAtEndOfAnim = msgbuffers.validate_bool(
      'PlayAnimWithSpriteBoxRemaps.lockFaceAtEndOfAnim', value)

  @property
  def animName(self):
    "string[uint_8] animName struct property."
    return self._animName

  @animName.setter
  def animName(self, value):
    self._animName = msgbuffers.validate_string(
      'PlayAnimWithSpriteBoxRemaps.animName', value, 255)

  def __init__(self, tag=0, numRemaps=0, spriteBoxRemaps=(Anki.Vector.RobotInterface.SpriteBoxRemap(),) * 150, lockFaceAtEndOfAnim=False, animName=''):
    self.tag = tag
    self.numRemaps = numRemaps
    self.spriteBoxRemaps = spriteBoxRemaps
    self.lockFaceAtEndOfAnim = lockFaceAtEndOfAnim
    self.animName = animName

  @classmethod
  def unpack(cls, buffer):
    "Reads a new PlayAnimWithSpriteBoxRemaps from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('PlayAnimWithSpriteBoxRemaps.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 PlayAnimWithSpriteBoxRemaps from the given BinaryReader."
    _tag = reader.read('B')
    _numRemaps = reader.read('B')
    _spriteBoxRemaps = reader.read_object_farray(Anki.Vector.RobotInterface.SpriteBoxRemap.unpack_from, 150)
    _lockFaceAtEndOfAnim = bool(reader.read('b'))
    _animName = reader.read_string('B')
    return cls(_tag, _numRemaps, _spriteBoxRemaps, _lockFaceAtEndOfAnim, _animName)

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

  def pack_to(self, writer):
    "Writes the current PlayAnimWithSpriteBoxRemaps to the given BinaryWriter."
    writer.write(self._tag, 'B')
    writer.write(self._numRemaps, 'B')
    writer.write_object_farray(self._spriteBoxRemaps, 150)
    writer.write(int(self._lockFaceAtEndOfAnim), 'b')
    writer.write_string(self._animName, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._tag == other._tag and
        self._numRemaps == other._numRemaps and
        self._spriteBoxRemaps == other._spriteBoxRemaps and
        self._lockFaceAtEndOfAnim == other._lockFaceAtEndOfAnim and
        self._animName == other._animName)
    else:
      return NotImplemented

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

  def __len__(self):
    return (msgbuffers.size(self._tag, 'B') +
      msgbuffers.size(self._numRemaps, 'B') +
      msgbuffers.size_object_farray(self._spriteBoxRemaps, 150) +
      msgbuffers.size(self._lockFaceAtEndOfAnim, 'b') +
      msgbuffers.size_string(self._animName, 'B'))

  def __str__(self):
    return '{type}(tag={tag}, numRemaps={numRemaps}, spriteBoxRemaps={spriteBoxRemaps}, lockFaceAtEndOfAnim={lockFaceAtEndOfAnim}, animName={animName})'.format(
      type=type(self).__name__,
      tag=self._tag,
      numRemaps=self._numRemaps,
      spriteBoxRemaps=msgbuffers.shorten_sequence(self._spriteBoxRemaps),
      lockFaceAtEndOfAnim=self._lockFaceAtEndOfAnim,
      animName=msgbuffers.shorten_string(self._animName))

  def __repr__(self):
    return '{type}(tag={tag}, numRemaps={numRemaps}, spriteBoxRemaps={spriteBoxRemaps}, lockFaceAtEndOfAnim={lockFaceAtEndOfAnim}, animName={animName})'.format(
      type=type(self).__name__,
      tag=repr(self._tag),
      numRemaps=repr(self._numRemaps),
      spriteBoxRemaps=repr(self._spriteBoxRemaps),
      lockFaceAtEndOfAnim=repr(self._lockFaceAtEndOfAnim),
      animName=repr(self._animName))

Anki.Vector.RobotInterface.PlayAnimWithSpriteBoxRemaps = PlayAnimWithSpriteBoxRemaps
del PlayAnimWithSpriteBoxRemaps


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

  __slots__ = (
    '_spriteBoxKeyFrames', # SpriteBoxKeyFrame[40]
    '_tag',                # uint_8
    '_numKeyFrames',       # uint_8
    '_animName',           # string[uint_8]
  )

  @property
  def spriteBoxKeyFrames(self):
    "SpriteBoxKeyFrame[40] spriteBoxKeyFrames struct property."
    return self._spriteBoxKeyFrames

  @spriteBoxKeyFrames.setter
  def spriteBoxKeyFrames(self, value):
    self._spriteBoxKeyFrames = msgbuffers.validate_farray(
      'PlayAnimWithSpriteBoxKeyFrames.spriteBoxKeyFrames', value, 40,
      lambda name, value_inner: msgbuffers.validate_object(
        name, value_inner, Anki.Vision.SpriteBoxKeyFrame))

  @property
  def tag(self):
    "uint_8 tag struct property."
    return self._tag

  @tag.setter
  def tag(self, value):
    self._tag = msgbuffers.validate_integer(
      'PlayAnimWithSpriteBoxKeyFrames.tag', value, 0, 255)

  @property
  def numKeyFrames(self):
    "uint_8 numKeyFrames struct property."
    return self._numKeyFrames

  @numKeyFrames.setter
  def numKeyFrames(self, value):
    self._numKeyFrames = msgbuffers.validate_integer(
      'PlayAnimWithSpriteBoxKeyFrames.numKeyFrames', value, 0, 255)

  @property
  def animName(self):
    "string[uint_8] animName struct property."
    return self._animName

  @animName.setter
  def animName(self, value):
    self._animName = msgbuffers.validate_string(
      'PlayAnimWithSpriteBoxKeyFrames.animName', value, 255)

  def __init__(self, spriteBoxKeyFrames=(Anki.Vision.SpriteBoxKeyFrame(),) * 40, tag=0, numKeyFrames=0, animName=''):
    self.spriteBoxKeyFrames = spriteBoxKeyFrames
    self.tag = tag
    self.numKeyFrames = numKeyFrames
    self.animName = animName

  @classmethod
  def unpack(cls, buffer):
    "Reads a new PlayAnimWithSpriteBoxKeyFrames from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('PlayAnimWithSpriteBoxKeyFrames.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 PlayAnimWithSpriteBoxKeyFrames from the given BinaryReader."
    _spriteBoxKeyFrames = reader.read_object_farray(Anki.Vision.SpriteBoxKeyFrame.unpack_from, 40)
    _tag = reader.read('B')
    _numKeyFrames = reader.read('B')
    _animName = reader.read_string('B')
    return cls(_spriteBoxKeyFrames, _tag, _numKeyFrames, _animName)

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

  def pack_to(self, writer):
    "Writes the current PlayAnimWithSpriteBoxKeyFrames to the given BinaryWriter."
    writer.write_object_farray(self._spriteBoxKeyFrames, 40)
    writer.write(self._tag, 'B')
    writer.write(self._numKeyFrames, 'B')
    writer.write_string(self._animName, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._spriteBoxKeyFrames == other._spriteBoxKeyFrames and
        self._tag == other._tag and
        self._numKeyFrames == other._numKeyFrames and
        self._animName == other._animName)
    else:
      return NotImplemented

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

  def __len__(self):
    return (msgbuffers.size_object_farray(self._spriteBoxKeyFrames, 40) +
      msgbuffers.size(self._tag, 'B') +
      msgbuffers.size(self._numKeyFrames, 'B') +
      msgbuffers.size_string(self._animName, 'B'))

  def __str__(self):
    return '{type}(spriteBoxKeyFrames={spriteBoxKeyFrames}, tag={tag}, numKeyFrames={numKeyFrames}, animName={animName})'.format(
      type=type(self).__name__,
      spriteBoxKeyFrames=msgbuffers.shorten_sequence(self._spriteBoxKeyFrames),
      tag=self._tag,
      numKeyFrames=self._numKeyFrames,
      animName=msgbuffers.shorten_string(self._animName))

  def __repr__(self):
    return '{type}(spriteBoxKeyFrames={spriteBoxKeyFrames}, tag={tag}, numKeyFrames={numKeyFrames}, animName={animName})'.format(
      type=type(self).__name__,
      spriteBoxKeyFrames=repr(self._spriteBoxKeyFrames),
      tag=repr(self._tag),
      numKeyFrames=repr(self._numKeyFrames),
      animName=repr(self._animName))

Anki.Vector.RobotInterface.PlayAnimWithSpriteBoxKeyFrames = PlayAnimWithSpriteBoxKeyFrames
del PlayAnimWithSpriteBoxKeyFrames


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

  __slots__ = (
    '_spriteBoxKeyFrames', # SpriteBoxKeyFrame[50]
    '_numKeyFrames',       # uint_8
  )

  @property
  def spriteBoxKeyFrames(self):
    "SpriteBoxKeyFrame[50] spriteBoxKeyFrames struct property."
    return self._spriteBoxKeyFrames

  @spriteBoxKeyFrames.setter
  def spriteBoxKeyFrames(self, value):
    self._spriteBoxKeyFrames = msgbuffers.validate_farray(
      'AddSpriteBoxKeyFrames.spriteBoxKeyFrames', value, 50,
      lambda name, value_inner: msgbuffers.validate_object(
        name, value_inner, Anki.Vision.SpriteBoxKeyFrame))

  @property
  def numKeyFrames(self):
    "uint_8 numKeyFrames struct property."
    return self._numKeyFrames

  @numKeyFrames.setter
  def numKeyFrames(self, value):
    self._numKeyFrames = msgbuffers.validate_integer(
      'AddSpriteBoxKeyFrames.numKeyFrames', value, 0, 255)

  def __init__(self, spriteBoxKeyFrames=(Anki.Vision.SpriteBoxKeyFrame(),) * 50, numKeyFrames=0):
    self.spriteBoxKeyFrames = spriteBoxKeyFrames
    self.numKeyFrames = numKeyFrames

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

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

  def pack_to(self, writer):
    "Writes the current AddSpriteBoxKeyFrames to the given BinaryWriter."
    writer.write_object_farray(self._spriteBoxKeyFrames, 50)
    writer.write(self._numKeyFrames, 'B')

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

  def __str__(self):
    return '{type}(spriteBoxKeyFrames={spriteBoxKeyFrames}, numKeyFrames={numKeyFrames})'.format(
      type=type(self).__name__,
      spriteBoxKeyFrames=msgbuffers.shorten_sequence(self._spriteBoxKeyFrames),
      numKeyFrames=self._numKeyFrames)

  def __repr__(self):
    return '{type}(spriteBoxKeyFrames={spriteBoxKeyFrames}, numKeyFrames={numKeyFrames})'.format(
      type=type(self).__name__,
      spriteBoxKeyFrames=repr(self._spriteBoxKeyFrames),
      numKeyFrames=repr(self._numKeyFrames))

Anki.Vector.RobotInterface.AddSpriteBoxKeyFrames = AddSpriteBoxKeyFrames
del AddSpriteBoxKeyFrames


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

  __slots__ = (
    '_duration_ms', # uint_32
    '_faceData',    # uint_8[1104]
    '_imageId',     # uint_8
    '_chunkIndex',  # uint_8
  )

  @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)

  def __init__(self, duration_ms=0, faceData=(0,) * 1104, imageId=0, chunkIndex=0):
    self.duration_ms = duration_ms
    self.faceData = faceData
    self.imageId = imageId
    self.chunkIndex = chunkIndex

  @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')
    return cls(_duration_ms, _faceData, _imageId, _chunkIndex)

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

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

  def __str__(self):
    return '{type}(duration_ms={duration_ms}, faceData={faceData}, imageId={imageId}, chunkIndex={chunkIndex})'.format(
      type=type(self).__name__,
      duration_ms=self._duration_ms,
      faceData=msgbuffers.shorten_sequence(self._faceData),
      imageId=self._imageId,
      chunkIndex=self._chunkIndex)

  def __repr__(self):
    return '{type}(duration_ms={duration_ms}, faceData={faceData}, imageId={imageId}, chunkIndex={chunkIndex})'.format(
      type=type(self).__name__,
      duration_ms=repr(self._duration_ms),
      faceData=repr(self._faceData),
      imageId=repr(self._imageId),
      chunkIndex=repr(self._chunkIndex))

Anki.Vector.RobotInterface.DisplayFaceImageBinaryChunk = DisplayFaceImageBinaryChunk
del DisplayFaceImageBinaryChunk


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

  __slots__ = (
    '_duration_ms', # uint_32
    '_faceData',    # uint_8[1200]
    '_numPixels',   # uint_16
    '_imageId',     # uint_8
    '_chunkIndex',  # uint_8
  )

  @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(
      'DisplayFaceImageGrayscaleChunk.duration_ms', value, 0, 4294967295)

  @property
  def faceData(self):
    "uint_8[1200] faceData struct property."
    return self._faceData

  @faceData.setter
  def faceData(self, value):
    self._faceData = msgbuffers.validate_farray(
      'DisplayFaceImageGrayscaleChunk.faceData', value, 1200,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 255))

  @property
  def numPixels(self):
    "uint_16 numPixels struct property."
    return self._numPixels

  @numPixels.setter
  def numPixels(self, value):
    self._numPixels = msgbuffers.validate_integer(
      'DisplayFaceImageGrayscaleChunk.numPixels', value, 0, 65535)

  @property
  def imageId(self):
    "uint_8 imageId struct property."
    return self._imageId

  @imageId.setter
  def imageId(self, value):
    self._imageId = msgbuffers.validate_integer(
      'DisplayFaceImageGrayscaleChunk.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(
      'DisplayFaceImageGrayscaleChunk.chunkIndex', value, 0, 255)

  def __init__(self, duration_ms=0, faceData=(0,) * 1200, numPixels=0, imageId=0, chunkIndex=0):
    self.duration_ms = duration_ms
    self.faceData = faceData
    self.numPixels = numPixels
    self.imageId = imageId
    self.chunkIndex = chunkIndex

  @classmethod
  def unpack(cls, buffer):
    "Reads a new DisplayFaceImageGrayscaleChunk from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('DisplayFaceImageGrayscaleChunk.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 DisplayFaceImageGrayscaleChunk from the given BinaryReader."
    _duration_ms = reader.read('I')
    _faceData = reader.read_farray('B', 1200)
    _numPixels = reader.read('H')
    _imageId = reader.read('B')
    _chunkIndex = reader.read('B')
    return cls(_duration_ms, _faceData, _numPixels, _imageId, _chunkIndex)

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

  def pack_to(self, writer):
    "Writes the current DisplayFaceImageGrayscaleChunk to the given BinaryWriter."
    writer.write(self._duration_ms, 'I')
    writer.write_farray(self._faceData, 'B', 1200)
    writer.write(self._numPixels, 'H')
    writer.write(self._imageId, 'B')
    writer.write(self._chunkIndex, '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._numPixels == other._numPixels and
        self._imageId == other._imageId and
        self._chunkIndex == other._chunkIndex)
    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', 1200) +
      msgbuffers.size(self._numPixels, 'H') +
      msgbuffers.size(self._imageId, 'B') +
      msgbuffers.size(self._chunkIndex, 'B'))

  def __str__(self):
    return '{type}(duration_ms={duration_ms}, faceData={faceData}, numPixels={numPixels}, imageId={imageId}, chunkIndex={chunkIndex})'.format(
      type=type(self).__name__,
      duration_ms=self._duration_ms,
      faceData=msgbuffers.shorten_sequence(self._faceData),
      numPixels=self._numPixels,
      imageId=self._imageId,
      chunkIndex=self._chunkIndex)

  def __repr__(self):
    return '{type}(duration_ms={duration_ms}, faceData={faceData}, numPixels={numPixels}, imageId={imageId}, chunkIndex={chunkIndex})'.format(
      type=type(self).__name__,
      duration_ms=repr(self._duration_ms),
      faceData=repr(self._faceData),
      numPixels=repr(self._numPixels),
      imageId=repr(self._imageId),
      chunkIndex=repr(self._chunkIndex))

Anki.Vector.RobotInterface.DisplayFaceImageGrayscaleChunk = DisplayFaceImageGrayscaleChunk
del DisplayFaceImageGrayscaleChunk


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

  __slots__ = (
    '_duration_ms', # uint_32
    '_faceData',    # uint_16[600]
    '_numPixels',   # uint_16
    '_imageId',     # uint_8
    '_chunkIndex',  # uint_8
  )

  @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 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 imageId(self):
    "uint_8 imageId struct property."
    return self._imageId

  @imageId.setter
  def imageId(self, value):
    self._imageId = msgbuffers.validate_integer(
      'DisplayFaceImageRGBChunk.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(
      'DisplayFaceImageRGBChunk.chunkIndex', value, 0, 255)

  def __init__(self, duration_ms=0, faceData=(0,) * 600, numPixels=0, imageId=0, chunkIndex=0):
    self.duration_ms = duration_ms
    self.faceData = faceData
    self.numPixels = numPixels
    self.imageId = imageId
    self.chunkIndex = chunkIndex

  @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."
    _duration_ms = reader.read('I')
    _faceData = reader.read_farray('H', 600)
    _numPixels = reader.read('H')
    _imageId = reader.read('B')
    _chunkIndex = reader.read('B')
    return cls(_duration_ms, _faceData, _numPixels, _imageId, _chunkIndex)

  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(self._duration_ms, 'I')
    writer.write_farray(self._faceData, 'H', 600)
    writer.write(self._numPixels, 'H')
    writer.write(self._imageId, 'B')
    writer.write(self._chunkIndex, '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._numPixels == other._numPixels and
        self._imageId == other._imageId and
        self._chunkIndex == other._chunkIndex)
    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, 'H', 600) +
      msgbuffers.size(self._numPixels, 'H') +
      msgbuffers.size(self._imageId, 'B') +
      msgbuffers.size(self._chunkIndex, 'B'))

  def __str__(self):
    return '{type}(duration_ms={duration_ms}, faceData={faceData}, numPixels={numPixels}, imageId={imageId}, chunkIndex={chunkIndex})'.format(
      type=type(self).__name__,
      duration_ms=self._duration_ms,
      faceData=msgbuffers.shorten_sequence(self._faceData),
      numPixels=self._numPixels,
      imageId=self._imageId,
      chunkIndex=self._chunkIndex)

  def __repr__(self):
    return '{type}(duration_ms={duration_ms}, faceData={faceData}, numPixels={numPixels}, imageId={imageId}, chunkIndex={chunkIndex})'.format(
      type=type(self).__name__,
      duration_ms=repr(self._duration_ms),
      faceData=repr(self._faceData),
      numPixels=repr(self._numPixels),
      imageId=repr(self._imageId),
      chunkIndex=repr(self._chunkIndex))

Anki.Vector.RobotInterface.DisplayFaceImageRGBChunk = DisplayFaceImageRGBChunk
del DisplayFaceImageRGBChunk


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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


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

  __slots__ = (
    '_varName',  # uint_8[64]
    '_tryValue', # uint_8[16]
  )

  @property
  def varName(self):
    "uint_8[64] varName struct property."
    return self._varName

  @varName.setter
  def varName(self, value):
    self._varName = msgbuffers.validate_farray(
      'SetDebugConsoleVarMessage.varName', value, 64,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 255))

  @property
  def tryValue(self):
    "uint_8[16] tryValue struct property."
    return self._tryValue

  @tryValue.setter
  def tryValue(self, value):
    self._tryValue = msgbuffers.validate_farray(
      'SetDebugConsoleVarMessage.tryValue', value, 16,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 255))

  def __init__(self, varName=(0,) * 64, tryValue=(0,) * 16):
    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_farray('B', 64)
    _tryValue = reader.read_farray('B', 16)
    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_farray(self._varName, 'B', 64)
    writer.write_farray(self._tryValue, 'B', 16)

  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_farray(self._varName, 'B', 64) +
      msgbuffers.size_farray(self._tryValue, 'B', 16))

  def __str__(self):
    return '{type}(varName={varName}, tryValue={tryValue})'.format(
      type=type(self).__name__,
      varName=msgbuffers.shorten_sequence(self._varName),
      tryValue=msgbuffers.shorten_sequence(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.RobotInterface.SetDebugConsoleVarMessage = SetDebugConsoleVarMessage
del SetDebugConsoleVarMessage


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

  __slots__ = (
    '_funcName', # uint_8[64]
    '_funcArgs', # uint_8[64]
  )

  @property
  def funcName(self):
    "uint_8[64] funcName struct property."
    return self._funcName

  @funcName.setter
  def funcName(self, value):
    self._funcName = msgbuffers.validate_farray(
      'RunDebugConsoleFuncMessage.funcName', value, 64,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 255))

  @property
  def funcArgs(self):
    "uint_8[64] funcArgs struct property."
    return self._funcArgs

  @funcArgs.setter
  def funcArgs(self, value):
    self._funcArgs = msgbuffers.validate_farray(
      'RunDebugConsoleFuncMessage.funcArgs', value, 64,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 255))

  def __init__(self, funcName=(0,) * 64, funcArgs=(0,) * 64):
    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_farray('B', 64)
    _funcArgs = reader.read_farray('B', 64)
    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_farray(self._funcName, 'B', 64)
    writer.write_farray(self._funcArgs, 'B', 64)

  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_farray(self._funcName, 'B', 64) +
      msgbuffers.size_farray(self._funcArgs, 'B', 64))

  def __str__(self):
    return '{type}(funcName={funcName}, funcArgs={funcArgs})'.format(
      type=type(self).__name__,
      funcName=msgbuffers.shorten_sequence(self._funcName),
      funcArgs=msgbuffers.shorten_sequence(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.RobotInterface.RunDebugConsoleFuncMessage = RunDebugConsoleFuncMessage
del RunDebugConsoleFuncMessage


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

  __slots__ = (
    '_style',          # Anki.AudioMetaData.SwitchState.Robot_Vic_External_Processing
    '_durationScalar', # float_32
    '_pitchScalar',    # float_32
    '_triggerMode',    # Anki.Vector.TextToSpeechTriggerMode
    '_ttsID',          # uint_8
    '_text',           # int_8[1024]
  )

  @property
  def style(self):
    "Anki.AudioMetaData.SwitchState.Robot_Vic_External_Processing style struct property."
    return self._style

  @style.setter
  def style(self, value):
    self._style = msgbuffers.validate_integer(
      'TextToSpeechPrepare.style', value, 0, 4294967295)

  @property
  def durationScalar(self):
    "float_32 durationScalar struct property."
    return self._durationScalar

  @durationScalar.setter
  def durationScalar(self, value):
    self._durationScalar = msgbuffers.validate_float(
      'TextToSpeechPrepare.durationScalar', value, 'f')

  @property
  def pitchScalar(self):
    "float_32 pitchScalar struct property."
    return self._pitchScalar

  @pitchScalar.setter
  def pitchScalar(self, value):
    self._pitchScalar = msgbuffers.validate_float(
      'TextToSpeechPrepare.pitchScalar', value, 'f')

  @property
  def triggerMode(self):
    "Anki.Vector.TextToSpeechTriggerMode triggerMode struct property."
    return self._triggerMode

  @triggerMode.setter
  def triggerMode(self, value):
    self._triggerMode = msgbuffers.validate_integer(
      'TextToSpeechPrepare.triggerMode', value, 0, 255)

  @property
  def ttsID(self):
    "uint_8 ttsID struct property."
    return self._ttsID

  @ttsID.setter
  def ttsID(self, value):
    self._ttsID = msgbuffers.validate_integer(
      'TextToSpeechPrepare.ttsID', value, 0, 255)

  @property
  def text(self):
    "int_8[1024] text struct property."
    return self._text

  @text.setter
  def text(self, value):
    self._text = msgbuffers.validate_farray(
      'TextToSpeechPrepare.text', value, 1024,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, -128, 127))

  def __init__(self, style=Anki.AudioMetaData.SwitchState.Robot_Vic_External_Processing.Default_Processed, durationScalar=0.0, pitchScalar=0.0, triggerMode=Anki.Vector.TextToSpeechTriggerMode.Invalid, ttsID=0, text=(0,) * 1024):
    self.style = style
    self.durationScalar = durationScalar
    self.pitchScalar = pitchScalar
    self.triggerMode = triggerMode
    self.ttsID = ttsID
    self.text = text

  @classmethod
  def unpack(cls, buffer):
    "Reads a new TextToSpeechPrepare from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('TextToSpeechPrepare.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 TextToSpeechPrepare from the given BinaryReader."
    _style = reader.read('I')
    _durationScalar = reader.read('f')
    _pitchScalar = reader.read('f')
    _triggerMode = reader.read('B')
    _ttsID = reader.read('B')
    _text = reader.read_farray('b', 1024)
    return cls(_style, _durationScalar, _pitchScalar, _triggerMode, _ttsID, _text)

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

  def pack_to(self, writer):
    "Writes the current TextToSpeechPrepare to the given BinaryWriter."
    writer.write(self._style, 'I')
    writer.write(self._durationScalar, 'f')
    writer.write(self._pitchScalar, 'f')
    writer.write(self._triggerMode, 'B')
    writer.write(self._ttsID, 'B')
    writer.write_farray(self._text, 'b', 1024)

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._style == other._style and
        self._durationScalar == other._durationScalar and
        self._pitchScalar == other._pitchScalar and
        self._triggerMode == other._triggerMode and
        self._ttsID == other._ttsID and
        self._text == other._text)
    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._style, 'I') +
      msgbuffers.size(self._durationScalar, 'f') +
      msgbuffers.size(self._pitchScalar, 'f') +
      msgbuffers.size(self._triggerMode, 'B') +
      msgbuffers.size(self._ttsID, 'B') +
      msgbuffers.size_farray(self._text, 'b', 1024))

  def __str__(self):
    return '{type}(style={style}, durationScalar={durationScalar}, pitchScalar={pitchScalar}, triggerMode={triggerMode}, ttsID={ttsID}, text={text})'.format(
      type=type(self).__name__,
      style=self._style,
      durationScalar=self._durationScalar,
      pitchScalar=self._pitchScalar,
      triggerMode=self._triggerMode,
      ttsID=self._ttsID,
      text=msgbuffers.shorten_sequence(self._text))

  def __repr__(self):
    return '{type}(style={style}, durationScalar={durationScalar}, pitchScalar={pitchScalar}, triggerMode={triggerMode}, ttsID={ttsID}, text={text})'.format(
      type=type(self).__name__,
      style=repr(self._style),
      durationScalar=repr(self._durationScalar),
      pitchScalar=repr(self._pitchScalar),
      triggerMode=repr(self._triggerMode),
      ttsID=repr(self._ttsID),
      text=repr(self._text))

Anki.Vector.RobotInterface.TextToSpeechPrepare = TextToSpeechPrepare
del TextToSpeechPrepare


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

  __slots__ = (
    '_ttsID', # uint_8
  )

  @property
  def ttsID(self):
    "uint_8 ttsID struct property."
    return self._ttsID

  @ttsID.setter
  def ttsID(self, value):
    self._ttsID = msgbuffers.validate_integer(
      'TextToSpeechPlay.ttsID', value, 0, 255)

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

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

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

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

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

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

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

Anki.Vector.RobotInterface.TextToSpeechPlay = TextToSpeechPlay
del TextToSpeechPlay


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

  __slots__ = (
    '_ttsID', # uint_8
  )

  @property
  def ttsID(self):
    "uint_8 ttsID struct property."
    return self._ttsID

  @ttsID.setter
  def ttsID(self, value):
    self._ttsID = msgbuffers.validate_integer(
      'TextToSpeechCancel.ttsID', value, 0, 255)

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

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

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

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

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

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

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

Anki.Vector.RobotInterface.TextToSpeechCancel = TextToSpeechCancel
del TextToSpeechCancel


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

  __slots__ = (
    '_relativeStreamTime_ms',     # uint_32
    '_applyBeforeTick',           # bool
    '_internalTag',               # uint_8
    '_setFullAnimTrackLockState', # Anki.Vector.RobotInterface.SetFullAnimTrackLockState
    '_padding',                   # uint_8[1]
    '_postAudioEvent',            # Anki.AudioEngine.Multiplexer.PostAudioEvent
    '_textToSpeechPlay',          # Anki.Vector.RobotInterface.TextToSpeechPlay
  )

  @property
  def relativeStreamTime_ms(self):
    "uint_32 relativeStreamTime_ms struct property."
    return self._relativeStreamTime_ms

  @relativeStreamTime_ms.setter
  def relativeStreamTime_ms(self, value):
    self._relativeStreamTime_ms = msgbuffers.validate_integer(
      'AlterStreamingAnimationAtTime.relativeStreamTime_ms', value, 0, 4294967295)

  @property
  def applyBeforeTick(self):
    "bool applyBeforeTick struct property."
    return self._applyBeforeTick

  @applyBeforeTick.setter
  def applyBeforeTick(self, value):
    self._applyBeforeTick = msgbuffers.validate_bool(
      'AlterStreamingAnimationAtTime.applyBeforeTick', value)

  @property
  def internalTag(self):
    "uint_8 internalTag struct property."
    return self._internalTag

  @internalTag.setter
  def internalTag(self, value):
    self._internalTag = msgbuffers.validate_integer(
      'AlterStreamingAnimationAtTime.internalTag', value, 0, 255)

  @property
  def setFullAnimTrackLockState(self):
    "Anki.Vector.RobotInterface.SetFullAnimTrackLockState setFullAnimTrackLockState struct property."
    return self._setFullAnimTrackLockState

  @setFullAnimTrackLockState.setter
  def setFullAnimTrackLockState(self, value):
    self._setFullAnimTrackLockState = msgbuffers.validate_object(
      'AlterStreamingAnimationAtTime.setFullAnimTrackLockState', value, Anki.Vector.RobotInterface.SetFullAnimTrackLockState)

  @property
  def padding(self):
    "uint_8[1] padding struct property."
    return self._padding

  @padding.setter
  def padding(self, value):
    self._padding = msgbuffers.validate_farray(
      'AlterStreamingAnimationAtTime.padding', value, 1,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 255))

  @property
  def postAudioEvent(self):
    "Anki.AudioEngine.Multiplexer.PostAudioEvent postAudioEvent struct property."
    return self._postAudioEvent

  @postAudioEvent.setter
  def postAudioEvent(self, value):
    self._postAudioEvent = msgbuffers.validate_object(
      'AlterStreamingAnimationAtTime.postAudioEvent', value, Anki.AudioEngine.Multiplexer.PostAudioEvent)

  @property
  def textToSpeechPlay(self):
    "Anki.Vector.RobotInterface.TextToSpeechPlay textToSpeechPlay struct property."
    return self._textToSpeechPlay

  @textToSpeechPlay.setter
  def textToSpeechPlay(self, value):
    self._textToSpeechPlay = msgbuffers.validate_object(
      'AlterStreamingAnimationAtTime.textToSpeechPlay', value, Anki.Vector.RobotInterface.TextToSpeechPlay)

  def __init__(self, relativeStreamTime_ms=0, applyBeforeTick=True, internalTag=0, setFullAnimTrackLockState=Anki.Vector.RobotInterface.SetFullAnimTrackLockState(), padding=(0,) * 1, postAudioEvent=Anki.AudioEngine.Multiplexer.PostAudioEvent(), textToSpeechPlay=Anki.Vector.RobotInterface.TextToSpeechPlay()):
    self.relativeStreamTime_ms = relativeStreamTime_ms
    self.applyBeforeTick = applyBeforeTick
    self.internalTag = internalTag
    self.setFullAnimTrackLockState = setFullAnimTrackLockState
    self.padding = padding
    self.postAudioEvent = postAudioEvent
    self.textToSpeechPlay = textToSpeechPlay

  @classmethod
  def unpack(cls, buffer):
    "Reads a new AlterStreamingAnimationAtTime from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('AlterStreamingAnimationAtTime.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 AlterStreamingAnimationAtTime from the given BinaryReader."
    _relativeStreamTime_ms = reader.read('I')
    _applyBeforeTick = bool(reader.read('b'))
    _internalTag = reader.read('B')
    _setFullAnimTrackLockState = reader.read_object(Anki.Vector.RobotInterface.SetFullAnimTrackLockState.unpack_from)
    _padding = reader.read_farray('B', 1)
    _postAudioEvent = reader.read_object(Anki.AudioEngine.Multiplexer.PostAudioEvent.unpack_from)
    _textToSpeechPlay = reader.read_object(Anki.Vector.RobotInterface.TextToSpeechPlay.unpack_from)
    return cls(_relativeStreamTime_ms, _applyBeforeTick, _internalTag, _setFullAnimTrackLockState, _padding, _postAudioEvent, _textToSpeechPlay)

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

  def pack_to(self, writer):
    "Writes the current AlterStreamingAnimationAtTime to the given BinaryWriter."
    writer.write(self._relativeStreamTime_ms, 'I')
    writer.write(int(self._applyBeforeTick), 'b')
    writer.write(self._internalTag, 'B')
    writer.write_object(self._setFullAnimTrackLockState)
    writer.write_farray(self._padding, 'B', 1)
    writer.write_object(self._postAudioEvent)
    writer.write_object(self._textToSpeechPlay)

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._relativeStreamTime_ms == other._relativeStreamTime_ms and
        self._applyBeforeTick == other._applyBeforeTick and
        self._internalTag == other._internalTag and
        self._setFullAnimTrackLockState == other._setFullAnimTrackLockState and
        self._padding == other._padding and
        self._postAudioEvent == other._postAudioEvent and
        self._textToSpeechPlay == other._textToSpeechPlay)
    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._relativeStreamTime_ms, 'I') +
      msgbuffers.size(self._applyBeforeTick, 'b') +
      msgbuffers.size(self._internalTag, 'B') +
      msgbuffers.size_object(self._setFullAnimTrackLockState) +
      msgbuffers.size_farray(self._padding, 'B', 1) +
      msgbuffers.size_object(self._postAudioEvent) +
      msgbuffers.size_object(self._textToSpeechPlay))

  def __str__(self):
    return '{type}(relativeStreamTime_ms={relativeStreamTime_ms}, applyBeforeTick={applyBeforeTick}, internalTag={internalTag}, setFullAnimTrackLockState={setFullAnimTrackLockState}, padding={padding}, postAudioEvent={postAudioEvent}, textToSpeechPlay={textToSpeechPlay})'.format(
      type=type(self).__name__,
      relativeStreamTime_ms=self._relativeStreamTime_ms,
      applyBeforeTick=self._applyBeforeTick,
      internalTag=self._internalTag,
      setFullAnimTrackLockState=self._setFullAnimTrackLockState,
      padding=msgbuffers.shorten_sequence(self._padding),
      postAudioEvent=self._postAudioEvent,
      textToSpeechPlay=self._textToSpeechPlay)

  def __repr__(self):
    return '{type}(relativeStreamTime_ms={relativeStreamTime_ms}, applyBeforeTick={applyBeforeTick}, internalTag={internalTag}, setFullAnimTrackLockState={setFullAnimTrackLockState}, padding={padding}, postAudioEvent={postAudioEvent}, textToSpeechPlay={textToSpeechPlay})'.format(
      type=type(self).__name__,
      relativeStreamTime_ms=repr(self._relativeStreamTime_ms),
      applyBeforeTick=repr(self._applyBeforeTick),
      internalTag=repr(self._internalTag),
      setFullAnimTrackLockState=repr(self._setFullAnimTrackLockState),
      padding=repr(self._padding),
      postAudioEvent=repr(self._postAudioEvent),
      textToSpeechPlay=repr(self._textToSpeechPlay))

Anki.Vector.RobotInterface.AlterStreamingAnimationAtTime = AlterStreamingAnimationAtTime
del AlterStreamingAnimationAtTime


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

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

  @property
  def locale(self):
    "string[uint_8] locale struct property."
    return self._locale

  @locale.setter
  def locale(self, value):
    self._locale = msgbuffers.validate_string(
      'SetLocale.locale', value, 255)

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

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

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

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

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

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

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

Anki.Vector.RobotInterface.SetLocale = SetLocale
del SetLocale


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

  __slots__ = (
    '_level', # Anki.Vector.LCDBrightness
  )

  @property
  def level(self):
    "Anki.Vector.LCDBrightness level struct property."
    return self._level

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

  def __init__(self, level=Anki.Vector.LCDBrightness.LCDLevelOff):
    self.level = level

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

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

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

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

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

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

Anki.Vector.RobotInterface.SetLCDBrightnessLevel = SetLCDBrightnessLevel
del SetLCDBrightnessLevel


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

  __slots__ = (
    '_isLow',                 # bool
    '_isCharging',            # bool
    '_onChargerContacts',     # bool
    '_isBatteryFull',         # bool
    '_isBatteryDisconnected', # bool
  )

  @property
  def isLow(self):
    "bool isLow struct property."
    return self._isLow

  @isLow.setter
  def isLow(self, value):
    self._isLow = msgbuffers.validate_bool(
      'BatteryStatus.isLow', value)

  @property
  def isCharging(self):
    "bool isCharging struct property."
    return self._isCharging

  @isCharging.setter
  def isCharging(self, value):
    self._isCharging = msgbuffers.validate_bool(
      'BatteryStatus.isCharging', value)

  @property
  def onChargerContacts(self):
    "bool onChargerContacts struct property."
    return self._onChargerContacts

  @onChargerContacts.setter
  def onChargerContacts(self, value):
    self._onChargerContacts = msgbuffers.validate_bool(
      'BatteryStatus.onChargerContacts', value)

  @property
  def isBatteryFull(self):
    "bool isBatteryFull struct property."
    return self._isBatteryFull

  @isBatteryFull.setter
  def isBatteryFull(self, value):
    self._isBatteryFull = msgbuffers.validate_bool(
      'BatteryStatus.isBatteryFull', value)

  @property
  def isBatteryDisconnected(self):
    "bool isBatteryDisconnected struct property."
    return self._isBatteryDisconnected

  @isBatteryDisconnected.setter
  def isBatteryDisconnected(self, value):
    self._isBatteryDisconnected = msgbuffers.validate_bool(
      'BatteryStatus.isBatteryDisconnected', value)

  def __init__(self, isLow=False, isCharging=False, onChargerContacts=False, isBatteryFull=False, isBatteryDisconnected=False):
    self.isLow = isLow
    self.isCharging = isCharging
    self.onChargerContacts = onChargerContacts
    self.isBatteryFull = isBatteryFull
    self.isBatteryDisconnected = isBatteryDisconnected

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

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

  def pack_to(self, writer):
    "Writes the current BatteryStatus to the given BinaryWriter."
    writer.write(int(self._isLow), 'b')
    writer.write(int(self._isCharging), 'b')
    writer.write(int(self._onChargerContacts), 'b')
    writer.write(int(self._isBatteryFull), 'b')
    writer.write(int(self._isBatteryDisconnected), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._isLow == other._isLow and
        self._isCharging == other._isCharging and
        self._onChargerContacts == other._onChargerContacts and
        self._isBatteryFull == other._isBatteryFull and
        self._isBatteryDisconnected == other._isBatteryDisconnected)
    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._isLow, 'b') +
      msgbuffers.size(self._isCharging, 'b') +
      msgbuffers.size(self._onChargerContacts, 'b') +
      msgbuffers.size(self._isBatteryFull, 'b') +
      msgbuffers.size(self._isBatteryDisconnected, 'b'))

  def __str__(self):
    return '{type}(isLow={isLow}, isCharging={isCharging}, onChargerContacts={onChargerContacts}, isBatteryFull={isBatteryFull}, isBatteryDisconnected={isBatteryDisconnected})'.format(
      type=type(self).__name__,
      isLow=self._isLow,
      isCharging=self._isCharging,
      onChargerContacts=self._onChargerContacts,
      isBatteryFull=self._isBatteryFull,
      isBatteryDisconnected=self._isBatteryDisconnected)

  def __repr__(self):
    return '{type}(isLow={isLow}, isCharging={isCharging}, onChargerContacts={onChargerContacts}, isBatteryFull={isBatteryFull}, isBatteryDisconnected={isBatteryDisconnected})'.format(
      type=type(self).__name__,
      isLow=repr(self._isLow),
      isCharging=repr(self._isCharging),
      onChargerContacts=repr(self._onChargerContacts),
      isBatteryFull=repr(self._isBatteryFull),
      isBatteryDisconnected=repr(self._isBatteryDisconnected))

Anki.Vector.RobotInterface.BatteryStatus = BatteryStatus
del BatteryStatus


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

  __slots__ = (
    '_trigger', # Anki.Vector.BackpackAnimationTrigger
  )

  @property
  def trigger(self):
    "Anki.Vector.BackpackAnimationTrigger trigger struct property."
    return self._trigger

  @trigger.setter
  def trigger(self, value):
    self._trigger = msgbuffers.validate_integer(
      'TriggerBackpackAnimation.trigger', value, -2147483648, 2147483647)

  def __init__(self, trigger=Anki.Vector.BackpackAnimationTrigger.AlexaNotification):
    self.trigger = trigger

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

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

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

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

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

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

Anki.Vector.RobotInterface.TriggerBackpackAnimation = TriggerBackpackAnimation
del TriggerBackpackAnimation


class AcousticTestEnabled(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(
      'AcousticTestEnabled.enabled', value)

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

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

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

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


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

  __slots__ = (
    '_audio_volume', # uint_16
    '_audio_rate',   # uint_16
  )

  @property
  def audio_volume(self):
    "uint_16 audio_volume struct property."
    return self._audio_volume

  @audio_volume.setter
  def audio_volume(self, value):
    self._audio_volume = msgbuffers.validate_integer(
      'ExternalAudioPrepare.audio_volume', value, 0, 65535)

  @property
  def audio_rate(self):
    "uint_16 audio_rate struct property."
    return self._audio_rate

  @audio_rate.setter
  def audio_rate(self, value):
    self._audio_rate = msgbuffers.validate_integer(
      'ExternalAudioPrepare.audio_rate', value, 0, 65535)

  def __init__(self, audio_volume=0, audio_rate=0):
    self.audio_volume = audio_volume
    self.audio_rate = audio_rate

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

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

  def pack_to(self, writer):
    "Writes the current ExternalAudioPrepare to the given BinaryWriter."
    writer.write(self._audio_volume, 'H')
    writer.write(self._audio_rate, 'H')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._audio_volume == other._audio_volume and
        self._audio_rate == other._audio_rate)
    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._audio_volume, 'H') +
      msgbuffers.size(self._audio_rate, 'H'))

  def __str__(self):
    return '{type}(audio_volume={audio_volume}, audio_rate={audio_rate})'.format(
      type=type(self).__name__,
      audio_volume=self._audio_volume,
      audio_rate=self._audio_rate)

  def __repr__(self):
    return '{type}(audio_volume={audio_volume}, audio_rate={audio_rate})'.format(
      type=type(self).__name__,
      audio_volume=repr(self._audio_volume),
      audio_rate=repr(self._audio_rate))

Anki.Vector.RobotInterface.ExternalAudioPrepare = ExternalAudioPrepare
del ExternalAudioPrepare


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

  __slots__ = (
    '_audio_chunk_size', # uint_16
    '_audio_chunk_data', # uint_16[512]
  )

  @property
  def audio_chunk_size(self):
    "uint_16 audio_chunk_size struct property."
    return self._audio_chunk_size

  @audio_chunk_size.setter
  def audio_chunk_size(self, value):
    self._audio_chunk_size = msgbuffers.validate_integer(
      'ExternalAudioChunk.audio_chunk_size', value, 0, 65535)

  @property
  def audio_chunk_data(self):
    "uint_16[512] audio_chunk_data struct property."
    return self._audio_chunk_data

  @audio_chunk_data.setter
  def audio_chunk_data(self, value):
    self._audio_chunk_data = msgbuffers.validate_farray(
      'ExternalAudioChunk.audio_chunk_data', value, 512,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 65535))

  def __init__(self, audio_chunk_size=0, audio_chunk_data=(0,) * 512):
    self.audio_chunk_size = audio_chunk_size
    self.audio_chunk_data = audio_chunk_data

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

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

  def pack_to(self, writer):
    "Writes the current ExternalAudioChunk to the given BinaryWriter."
    writer.write(self._audio_chunk_size, 'H')
    writer.write_farray(self._audio_chunk_data, 'H', 512)

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._audio_chunk_size == other._audio_chunk_size and
        self._audio_chunk_data == other._audio_chunk_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):
    return (msgbuffers.size(self._audio_chunk_size, 'H') +
      msgbuffers.size_farray(self._audio_chunk_data, 'H', 512))

  def __str__(self):
    return '{type}(audio_chunk_size={audio_chunk_size}, audio_chunk_data={audio_chunk_data})'.format(
      type=type(self).__name__,
      audio_chunk_size=self._audio_chunk_size,
      audio_chunk_data=msgbuffers.shorten_sequence(self._audio_chunk_data))

  def __repr__(self):
    return '{type}(audio_chunk_size={audio_chunk_size}, audio_chunk_data={audio_chunk_data})'.format(
      type=type(self).__name__,
      audio_chunk_size=repr(self._audio_chunk_size),
      audio_chunk_data=repr(self._audio_chunk_data))

Anki.Vector.RobotInterface.ExternalAudioChunk = ExternalAudioChunk
del ExternalAudioChunk


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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


class SettingBeingChanged(object):
  "Automatically-generated uint_8 enumeration."
  SETTING_ENABLE_DATA_COLLECTION = 0
  SETTING_TIME_ZONE              = 1

Anki.Vector.RobotInterface.SettingBeingChanged = SettingBeingChanged
del SettingBeingChanged


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

  __slots__ = (
    '_settingBeingChanged',  # Anki.Vector.RobotInterface.SettingBeingChanged
    '_enableDataCollection', # bool
    '_timeZone',             # string[uint_8]
  )

  @property
  def settingBeingChanged(self):
    "Anki.Vector.RobotInterface.SettingBeingChanged settingBeingChanged struct property."
    return self._settingBeingChanged

  @settingBeingChanged.setter
  def settingBeingChanged(self, value):
    self._settingBeingChanged = msgbuffers.validate_integer(
      'UpdatedSettings.settingBeingChanged', value, 0, 255)

  @property
  def enableDataCollection(self):
    "bool enableDataCollection struct property."
    return self._enableDataCollection

  @enableDataCollection.setter
  def enableDataCollection(self, value):
    self._enableDataCollection = msgbuffers.validate_bool(
      'UpdatedSettings.enableDataCollection', value)

  @property
  def timeZone(self):
    "string[uint_8] timeZone struct property."
    return self._timeZone

  @timeZone.setter
  def timeZone(self, value):
    self._timeZone = msgbuffers.validate_string(
      'UpdatedSettings.timeZone', value, 255)

  def __init__(self, settingBeingChanged=Anki.Vector.RobotInterface.SettingBeingChanged.SETTING_ENABLE_DATA_COLLECTION, enableDataCollection=False, timeZone=''):
    self.settingBeingChanged = settingBeingChanged
    self.enableDataCollection = enableDataCollection
    self.timeZone = timeZone

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

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

  def pack_to(self, writer):
    "Writes the current UpdatedSettings to the given BinaryWriter."
    writer.write(self._settingBeingChanged, 'B')
    writer.write(int(self._enableDataCollection), 'b')
    writer.write_string(self._timeZone, 'B')

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

  def __str__(self):
    return '{type}(settingBeingChanged={settingBeingChanged}, enableDataCollection={enableDataCollection}, timeZone={timeZone})'.format(
      type=type(self).__name__,
      settingBeingChanged=self._settingBeingChanged,
      enableDataCollection=self._enableDataCollection,
      timeZone=msgbuffers.shorten_string(self._timeZone))

  def __repr__(self):
    return '{type}(settingBeingChanged={settingBeingChanged}, enableDataCollection={enableDataCollection}, timeZone={timeZone})'.format(
      type=type(self).__name__,
      settingBeingChanged=repr(self._settingBeingChanged),
      enableDataCollection=repr(self._enableDataCollection),
      timeZone=repr(self._timeZone))

Anki.Vector.RobotInterface.UpdatedSettings = UpdatedSettings
del UpdatedSettings


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

  __slots__ = (
    '_data', # Anki.Vector.RangeDataDisplay
  )

  @property
  def data(self):
    "Anki.Vector.RangeDataDisplay data struct property."
    return self._data

  @data.setter
  def data(self, value):
    self._data = msgbuffers.validate_object(
      'RangeDataToDisplay.data', value, Anki.Vector.RangeDataDisplay)

  def __init__(self, data=Anki.Vector.RangeDataDisplay()):
    self.data = data

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

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

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

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

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

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

Anki.Vector.RobotInterface.RangeDataToDisplay = RangeDataToDisplay
del RangeDataToDisplay


class ToRobotAddressSpace(object):
  "Automatically-generated uint_32 enumeration."
  GLOBAL_INVALID_TAG  = 0
  TO_SUPERVISOR_START = 0x1
  TO_SUPERVISOR_END   = 0x4f
  TO_ANIM_START       = 0x50
  TO_ANIM_END         = 0xaf
  TO_ENG_START        = 0xb0
  TO_ENG_UNREL        = 0xf0
  TO_ENG_END          = 0xfe

Anki.Vector.RobotInterface.ToRobotAddressSpace = ToRobotAddressSpace
del ToRobotAddressSpace


class EngineToRobot(object):
  "Generated message-passing union."

  __slots__ = ('_tag', '_data')

  class Tag(object):
    "The type indicator for this union."
    syncRobot                         = 0x2  # Anki.Vector.RobotInterface.SyncRobot
    shutdown                          = 0x3  # Anki.Vector.RobotInterface.Shutdown
    calmPowerMode                     = 0x4  # Anki.Vector.RobotInterface.CalmPowerMode
    startControllerTestMode           = 0xa  # Anki.Vector.StartControllerTestMode
    setControllerGains                = 0xb  # Anki.Vector.RobotInterface.ControllerGains
    setMotionModelParams              = 0xc  # Anki.Vector.RobotInterface.SetMotionModelParams
    rollActionParams                  = 0xd  # Anki.Vector.RobotInterface.RollActionParams
    playpenStart                      = 0xe  # Anki.Vector.RobotInterface.PlaypenStart
    printBodyData                     = 0xf  # Anki.Vector.RobotInterface.PrintBodyData
    drive                             = 0x10 # Anki.Vector.RobotInterface.DriveWheels
    driveCurvature                    = 0x11 # Anki.Vector.RobotInterface.DriveWheelsCurvature
    moveLift                          = 0x12 # Anki.Vector.RobotInterface.MoveLift
    moveHead                          = 0x13 # Anki.Vector.RobotInterface.MoveHead
    liftHeight                        = 0x14 # Anki.Vector.RobotInterface.SetLiftHeight
    headAngle                         = 0x15 # Anki.Vector.RobotInterface.SetHeadAngle
    setLiftAngle                      = 0x16 # Anki.Vector.RobotInterface.SetLiftAngle
    setBodyAngle                      = 0x17 # Anki.Vector.RobotInterface.SetBodyAngle
    turnInPlaceAtSpeed                = 0x18 # Anki.Vector.RobotInterface.TurnInPlaceAtSpeed
    recordHeading                     = 0x19 # Anki.Vector.RobotInterface.RecordHeading
    turnToRecordedHeading             = 0x1a # Anki.Vector.RobotInterface.TurnToRecordedHeading
    enableMotorPower                  = 0x1b # Anki.Vector.RobotInterface.EnableMotorPower
    stop                              = 0x1c # Anki.Vector.RobotInterface.StopAllMotors
    setBackpackLayer                  = 0x1d # Anki.Vector.RobotInterface.BackpackSetLayer
    setBackpackLights                 = 0x1e # Anki.Vector.RobotInterface.SetBackpackLights
    setSystemLight                    = 0x1f # Anki.Vector.RobotInterface.SetSystemLight
    clearPath                         = 0x20 # Anki.Vector.RobotInterface.ClearPath
    appendPathSegLine                 = 0x21 # Anki.Vector.RobotInterface.AppendPathSegmentLine
    appendPathSegArc                  = 0x22 # Anki.Vector.RobotInterface.AppendPathSegmentArc
    appendPathSegPointTurn            = 0x23 # Anki.Vector.RobotInterface.AppendPathSegmentPointTurn
    trimPath                          = 0x24 # Anki.Vector.RobotInterface.TrimPath
    executePath                       = 0x25 # Anki.Vector.RobotInterface.ExecutePath
    dockWithObject                    = 0x26 # Anki.Vector.DockWithObject
    abortDocking                      = 0x27 # Anki.Vector.AbortDocking
    placeObjectOnGround               = 0x28 # Anki.Vector.PlaceObjectOnGround
    dockingErrorSignal                = 0x2a # Anki.Vector.DockingErrorSignal
    setCarryState                     = 0x2b # Anki.Vector.CarryStateUpdate
    cameraFOVInfo                     = 0x2c # Anki.Vector.CameraFOVInfo
    absLocalizationUpdate             = 0x2d # Anki.Vector.RobotInterface.AbsoluteLocalizationUpdate
    forceDelocalizeSimulatedRobot     = 0x2e # Anki.Vector.RobotInterface.ForceDelocalizeSimulatedRobot
    imuRequest                        = 0x30 # Anki.Vector.IMURequest
    checkLiftLoad                     = 0x31 # Anki.Vector.RobotInterface.CheckLiftLoad
    setCliffDetectThresholds          = 0x32 # Anki.Vector.SetCliffDetectThresholds
    setWhiteDetectThresholds          = 0x39 # Anki.Vector.SetWhiteDetectThresholds
    startMotorCalibration             = 0x33 # Anki.Vector.RobotInterface.StartMotorCalibration
    enableStopOnCliff                 = 0x34 # Anki.Vector.RobotInterface.EnableStopOnCliff
    enableBraceWhenFalling            = 0x35 # Anki.Vector.RobotInterface.EnableBraceWhenFalling
    robotStoppedAck                   = 0x36 # Anki.Vector.RobotInterface.RobotStoppedAck
    cliffAlignToWhiteAction           = 0x37 # Anki.Vector.RobotInterface.CliffAlignToWhiteAction
    enableStopOnWhite                 = 0x38 # Anki.Vector.RobotInterface.EnableStopOnWhite
    playAnim                          = 0x50 # Anki.Vector.RobotInterface.PlayAnim
    setFullAnimTrackLockState         = 0x51 # Anki.Vector.RobotInterface.SetFullAnimTrackLockState
    addAnim                           = 0x52 # Anki.Vector.RobotInterface.AddAnim
    abortAnimation                    = 0x53 # Anki.Vector.RobotInterface.AbortAnimation
    setLocale                         = 0x54 # Anki.Vector.RobotInterface.SetLocale
    drawTextOnScreen                  = 0x55 # Anki.Vector.RobotInterface.DrawTextOnScreen
    displayProceduralFace             = 0x56 # Anki.Vector.RobotInterface.DisplayProceduralFace
    setFaceHue                        = 0x57 # Anki.Vector.RobotInterface.SetFaceHue
    setFaceSaturation                 = 0x58 # Anki.Vector.RobotInterface.SetFaceSaturation
    displayFaceImageBinaryChunk       = 0x59 # Anki.Vector.RobotInterface.DisplayFaceImageBinaryChunk
    displayFaceImageRGBChunk          = 0x5a # Anki.Vector.RobotInterface.DisplayFaceImageRGBChunk
    setKeepFaceAliveFocus             = 0x5c # Anki.Vector.RobotInterface.SetKeepFaceAliveFocus
    enableKeepFaceAlive               = 0x5d # Anki.Vector.RobotInterface.EnableKeepFaceAlive
    addOrUpdateEyeShift               = 0x5e # Anki.Vector.RobotInterface.AddOrUpdateEyeShift
    removeEyeShift                    = 0x5f # Anki.Vector.RobotInterface.RemoveEyeShift
    addSquint                         = 0x60 # Anki.Vector.RobotInterface.AddSquint
    removeSquint                      = 0x61 # Anki.Vector.RobotInterface.RemoveSquint
    displayFaceImageGrayscaleChunk    = 0x62 # Anki.Vector.RobotInterface.DisplayFaceImageGrayscaleChunk
    playAnimWithSpriteBoxRemaps       = 0x63 # Anki.Vector.RobotInterface.PlayAnimWithSpriteBoxRemaps
    playAnimWithSpriteBoxKeyFrames    = 0x64 # Anki.Vector.RobotInterface.PlayAnimWithSpriteBoxKeyFrames
    addSpriteBoxKeyFrames             = 0x65 # Anki.Vector.RobotInterface.AddSpriteBoxKeyFrames
    enableMirrorModeScreen            = 0x66 # Anki.Vector.RobotInterface.EnableMirrorModeScreen
    setButtonWakeWord                 = 0x67 # Anki.Vector.RobotInterface.SetButtonWakeWord
    postAudioEvent                    = 0x70 # Anki.AudioEngine.Multiplexer.PostAudioEvent
    stopAllAudioEvents                = 0x71 # Anki.AudioEngine.Multiplexer.StopAllAudioEvents
    postAudioGameState                = 0x72 # Anki.AudioEngine.Multiplexer.PostAudioGameState
    postAudioSwitchState              = 0x73 # Anki.AudioEngine.Multiplexer.PostAudioSwitchState
    postAudioParameter                = 0x74 # Anki.AudioEngine.Multiplexer.PostAudioParameter
    externalAudioPrepare              = 0x75 # Anki.Vector.RobotInterface.ExternalAudioPrepare
    externalAudioChunk                = 0x76 # Anki.Vector.RobotInterface.ExternalAudioChunk
    externalAudioComplete             = 0x77 # Anki.Vector.RobotInterface.ExternalAudioComplete
    externalAudioCancel               = 0x78 # Anki.Vector.RobotInterface.ExternalAudioCancel
    fakeWakeWordFromExternalInterface = 0x80 # Anki.Vector.RobotInterface.FakeWakeWordFromExternalInterface
    showUrlFace                       = 0x81 # Anki.Vector.RobotInterface.ShowUrlFace
    exitCCScreen                      = 0x82 # Anki.Vector.RobotInterface.ExitCCScreen
    setDebugConsoleVarMessage         = 0x90 # Anki.Vector.RobotInterface.SetDebugConsoleVarMessage
    runDebugConsoleFuncMessage        = 0x91 # Anki.Vector.RobotInterface.RunDebugConsoleFuncMessage
    textToSpeechPrepare               = 0x92 # Anki.Vector.RobotInterface.TextToSpeechPrepare
    textToSpeechPlay                  = 0x94 # Anki.Vector.RobotInterface.TextToSpeechPlay
    textToSpeechCancel                = 0x95 # Anki.Vector.RobotInterface.TextToSpeechCancel
    startRecordingMicsRaw             = 0x96 # Anki.Vector.RobotInterface.StartRecordingMicsRaw
    startRecordingMicsProcessed       = 0x97 # Anki.Vector.RobotInterface.StartRecordingMicsProcessed
    playbackAudioStart                = 0x98 # Anki.Vector.RobotInterface.StartPlaybackAudio
    startWakeWordlessStreaming        = 0x99 # Anki.Vector.RobotInterface.StartWakeWordlessStreaming
    setTriggerWordResponse            = 0x9a # Anki.Vector.RobotInterface.SetTriggerWordResponse
    setAlexaUXResponses               = 0x9b # Anki.Vector.RobotInterface.SetAlexaUXResponses
    resetBeatDetector                 = 0x9c # Anki.Vector.RobotInterface.ResetBeatDetector
    setAlexaUsage                     = 0x9d # Anki.Vector.RobotInterface.SetAlexaUsage
    setConnectionStatus               = 0xa0 # Anki.Vector.SwitchboardInterface.SetConnectionStatus
    setBLEPin                         = 0xa1 # Anki.Vector.SwitchboardInterface.SetBLEPin
    alterStreamingAnimation           = 0xa2 # Anki.Vector.RobotInterface.AlterStreamingAnimationAtTime
    sendBLEConnectionStatus           = 0xa3 # Anki.Vector.SwitchboardInterface.SendBLEConnectionStatus
    selfTestEnd                       = 0xa4 # Anki.Vector.RobotInterface.SelfTestEnd
    acousticTestEnabled               = 0xa5 # Anki.Vector.RobotInterface.AcousticTestEnabled
    rangeDataToDisplay                = 0xa6 # Anki.Vector.RobotInterface.RangeDataToDisplay
    setLCDBrightnessLevel             = 0xaa # Anki.Vector.RobotInterface.SetLCDBrightnessLevel
    batteryStatus                     = 0xab # Anki.Vector.RobotInterface.BatteryStatus
    triggerBackpackAnimation          = 0xac # Anki.Vector.RobotInterface.TriggerBackpackAnimation
    engineFullyLoaded                 = 0xad # Anki.Vector.RobotInterface.EngineFullyLoaded
    checkCloudConnectivity            = 0xae # Anki.Vector.RobotInterface.CheckCloudConnectivity
    updatedSettings                   = 0xaf # Anki.Vector.RobotInterface.UpdatedSettings

  @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 syncRobot(self):
    "Anki.Vector.RobotInterface.SyncRobot syncRobot union property."
    msgbuffers.safety_check_tag('syncRobot', self._tag, self.Tag.syncRobot, self._tags_by_value)
    return self._data

  @syncRobot.setter
  def syncRobot(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.syncRobot', value, Anki.Vector.RobotInterface.SyncRobot)
    self._tag = self.Tag.syncRobot

  @property
  def shutdown(self):
    "Anki.Vector.RobotInterface.Shutdown shutdown union property."
    msgbuffers.safety_check_tag('shutdown', self._tag, self.Tag.shutdown, self._tags_by_value)
    return self._data

  @shutdown.setter
  def shutdown(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.shutdown', value, Anki.Vector.RobotInterface.Shutdown)
    self._tag = self.Tag.shutdown

  @property
  def calmPowerMode(self):
    "Anki.Vector.RobotInterface.CalmPowerMode calmPowerMode union property."
    msgbuffers.safety_check_tag('calmPowerMode', self._tag, self.Tag.calmPowerMode, self._tags_by_value)
    return self._data

  @calmPowerMode.setter
  def calmPowerMode(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.calmPowerMode', value, Anki.Vector.RobotInterface.CalmPowerMode)
    self._tag = self.Tag.calmPowerMode

  @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(
      'EngineToRobot.startControllerTestMode', value, Anki.Vector.StartControllerTestMode)
    self._tag = self.Tag.startControllerTestMode

  @property
  def setControllerGains(self):
    "Anki.Vector.RobotInterface.ControllerGains setControllerGains union property."
    msgbuffers.safety_check_tag('setControllerGains', self._tag, self.Tag.setControllerGains, self._tags_by_value)
    return self._data

  @setControllerGains.setter
  def setControllerGains(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.setControllerGains', value, Anki.Vector.RobotInterface.ControllerGains)
    self._tag = self.Tag.setControllerGains

  @property
  def setMotionModelParams(self):
    "Anki.Vector.RobotInterface.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(
      'EngineToRobot.setMotionModelParams', value, Anki.Vector.RobotInterface.SetMotionModelParams)
    self._tag = self.Tag.setMotionModelParams

  @property
  def rollActionParams(self):
    "Anki.Vector.RobotInterface.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(
      'EngineToRobot.rollActionParams', value, Anki.Vector.RobotInterface.RollActionParams)
    self._tag = self.Tag.rollActionParams

  @property
  def playpenStart(self):
    "Anki.Vector.RobotInterface.PlaypenStart playpenStart union property."
    msgbuffers.safety_check_tag('playpenStart', self._tag, self.Tag.playpenStart, self._tags_by_value)
    return self._data

  @playpenStart.setter
  def playpenStart(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.playpenStart', value, Anki.Vector.RobotInterface.PlaypenStart)
    self._tag = self.Tag.playpenStart

  @property
  def printBodyData(self):
    "Anki.Vector.RobotInterface.PrintBodyData printBodyData union property."
    msgbuffers.safety_check_tag('printBodyData', self._tag, self.Tag.printBodyData, self._tags_by_value)
    return self._data

  @printBodyData.setter
  def printBodyData(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.printBodyData', value, Anki.Vector.RobotInterface.PrintBodyData)
    self._tag = self.Tag.printBodyData

  @property
  def drive(self):
    "Anki.Vector.RobotInterface.DriveWheels drive union property."
    msgbuffers.safety_check_tag('drive', self._tag, self.Tag.drive, self._tags_by_value)
    return self._data

  @drive.setter
  def drive(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.drive', value, Anki.Vector.RobotInterface.DriveWheels)
    self._tag = self.Tag.drive

  @property
  def driveCurvature(self):
    "Anki.Vector.RobotInterface.DriveWheelsCurvature driveCurvature union property."
    msgbuffers.safety_check_tag('driveCurvature', self._tag, self.Tag.driveCurvature, self._tags_by_value)
    return self._data

  @driveCurvature.setter
  def driveCurvature(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.driveCurvature', value, Anki.Vector.RobotInterface.DriveWheelsCurvature)
    self._tag = self.Tag.driveCurvature

  @property
  def moveLift(self):
    "Anki.Vector.RobotInterface.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(
      'EngineToRobot.moveLift', value, Anki.Vector.RobotInterface.MoveLift)
    self._tag = self.Tag.moveLift

  @property
  def moveHead(self):
    "Anki.Vector.RobotInterface.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(
      'EngineToRobot.moveHead', value, Anki.Vector.RobotInterface.MoveHead)
    self._tag = self.Tag.moveHead

  @property
  def liftHeight(self):
    "Anki.Vector.RobotInterface.SetLiftHeight liftHeight union property."
    msgbuffers.safety_check_tag('liftHeight', self._tag, self.Tag.liftHeight, self._tags_by_value)
    return self._data

  @liftHeight.setter
  def liftHeight(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.liftHeight', value, Anki.Vector.RobotInterface.SetLiftHeight)
    self._tag = self.Tag.liftHeight

  @property
  def headAngle(self):
    "Anki.Vector.RobotInterface.SetHeadAngle headAngle union property."
    msgbuffers.safety_check_tag('headAngle', self._tag, self.Tag.headAngle, self._tags_by_value)
    return self._data

  @headAngle.setter
  def headAngle(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.headAngle', value, Anki.Vector.RobotInterface.SetHeadAngle)
    self._tag = self.Tag.headAngle

  @property
  def setLiftAngle(self):
    "Anki.Vector.RobotInterface.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(
      'EngineToRobot.setLiftAngle', value, Anki.Vector.RobotInterface.SetLiftAngle)
    self._tag = self.Tag.setLiftAngle

  @property
  def setBodyAngle(self):
    "Anki.Vector.RobotInterface.SetBodyAngle setBodyAngle union property."
    msgbuffers.safety_check_tag('setBodyAngle', self._tag, self.Tag.setBodyAngle, self._tags_by_value)
    return self._data

  @setBodyAngle.setter
  def setBodyAngle(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.setBodyAngle', value, Anki.Vector.RobotInterface.SetBodyAngle)
    self._tag = self.Tag.setBodyAngle

  @property
  def turnInPlaceAtSpeed(self):
    "Anki.Vector.RobotInterface.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(
      'EngineToRobot.turnInPlaceAtSpeed', value, Anki.Vector.RobotInterface.TurnInPlaceAtSpeed)
    self._tag = self.Tag.turnInPlaceAtSpeed

  @property
  def recordHeading(self):
    "Anki.Vector.RobotInterface.RecordHeading recordHeading union property."
    msgbuffers.safety_check_tag('recordHeading', self._tag, self.Tag.recordHeading, self._tags_by_value)
    return self._data

  @recordHeading.setter
  def recordHeading(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.recordHeading', value, Anki.Vector.RobotInterface.RecordHeading)
    self._tag = self.Tag.recordHeading

  @property
  def turnToRecordedHeading(self):
    "Anki.Vector.RobotInterface.TurnToRecordedHeading turnToRecordedHeading union property."
    msgbuffers.safety_check_tag('turnToRecordedHeading', self._tag, self.Tag.turnToRecordedHeading, self._tags_by_value)
    return self._data

  @turnToRecordedHeading.setter
  def turnToRecordedHeading(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.turnToRecordedHeading', value, Anki.Vector.RobotInterface.TurnToRecordedHeading)
    self._tag = self.Tag.turnToRecordedHeading

  @property
  def enableMotorPower(self):
    "Anki.Vector.RobotInterface.EnableMotorPower enableMotorPower union property."
    msgbuffers.safety_check_tag('enableMotorPower', self._tag, self.Tag.enableMotorPower, self._tags_by_value)
    return self._data

  @enableMotorPower.setter
  def enableMotorPower(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.enableMotorPower', value, Anki.Vector.RobotInterface.EnableMotorPower)
    self._tag = self.Tag.enableMotorPower

  @property
  def stop(self):
    "Anki.Vector.RobotInterface.StopAllMotors stop union property."
    msgbuffers.safety_check_tag('stop', self._tag, self.Tag.stop, self._tags_by_value)
    return self._data

  @stop.setter
  def stop(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.stop', value, Anki.Vector.RobotInterface.StopAllMotors)
    self._tag = self.Tag.stop

  @property
  def setBackpackLayer(self):
    "Anki.Vector.RobotInterface.BackpackSetLayer setBackpackLayer union property."
    msgbuffers.safety_check_tag('setBackpackLayer', self._tag, self.Tag.setBackpackLayer, self._tags_by_value)
    return self._data

  @setBackpackLayer.setter
  def setBackpackLayer(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.setBackpackLayer', value, Anki.Vector.RobotInterface.BackpackSetLayer)
    self._tag = self.Tag.setBackpackLayer

  @property
  def setBackpackLights(self):
    "Anki.Vector.RobotInterface.SetBackpackLights setBackpackLights union property."
    msgbuffers.safety_check_tag('setBackpackLights', self._tag, self.Tag.setBackpackLights, self._tags_by_value)
    return self._data

  @setBackpackLights.setter
  def setBackpackLights(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.setBackpackLights', value, Anki.Vector.RobotInterface.SetBackpackLights)
    self._tag = self.Tag.setBackpackLights

  @property
  def setSystemLight(self):
    "Anki.Vector.RobotInterface.SetSystemLight setSystemLight union property."
    msgbuffers.safety_check_tag('setSystemLight', self._tag, self.Tag.setSystemLight, self._tags_by_value)
    return self._data

  @setSystemLight.setter
  def setSystemLight(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.setSystemLight', value, Anki.Vector.RobotInterface.SetSystemLight)
    self._tag = self.Tag.setSystemLight

  @property
  def clearPath(self):
    "Anki.Vector.RobotInterface.ClearPath clearPath union property."
    msgbuffers.safety_check_tag('clearPath', self._tag, self.Tag.clearPath, self._tags_by_value)
    return self._data

  @clearPath.setter
  def clearPath(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.clearPath', value, Anki.Vector.RobotInterface.ClearPath)
    self._tag = self.Tag.clearPath

  @property
  def appendPathSegLine(self):
    "Anki.Vector.RobotInterface.AppendPathSegmentLine appendPathSegLine union property."
    msgbuffers.safety_check_tag('appendPathSegLine', self._tag, self.Tag.appendPathSegLine, self._tags_by_value)
    return self._data

  @appendPathSegLine.setter
  def appendPathSegLine(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.appendPathSegLine', value, Anki.Vector.RobotInterface.AppendPathSegmentLine)
    self._tag = self.Tag.appendPathSegLine

  @property
  def appendPathSegArc(self):
    "Anki.Vector.RobotInterface.AppendPathSegmentArc appendPathSegArc union property."
    msgbuffers.safety_check_tag('appendPathSegArc', self._tag, self.Tag.appendPathSegArc, self._tags_by_value)
    return self._data

  @appendPathSegArc.setter
  def appendPathSegArc(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.appendPathSegArc', value, Anki.Vector.RobotInterface.AppendPathSegmentArc)
    self._tag = self.Tag.appendPathSegArc

  @property
  def appendPathSegPointTurn(self):
    "Anki.Vector.RobotInterface.AppendPathSegmentPointTurn appendPathSegPointTurn union property."
    msgbuffers.safety_check_tag('appendPathSegPointTurn', self._tag, self.Tag.appendPathSegPointTurn, self._tags_by_value)
    return self._data

  @appendPathSegPointTurn.setter
  def appendPathSegPointTurn(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.appendPathSegPointTurn', value, Anki.Vector.RobotInterface.AppendPathSegmentPointTurn)
    self._tag = self.Tag.appendPathSegPointTurn

  @property
  def trimPath(self):
    "Anki.Vector.RobotInterface.TrimPath trimPath union property."
    msgbuffers.safety_check_tag('trimPath', self._tag, self.Tag.trimPath, self._tags_by_value)
    return self._data

  @trimPath.setter
  def trimPath(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.trimPath', value, Anki.Vector.RobotInterface.TrimPath)
    self._tag = self.Tag.trimPath

  @property
  def executePath(self):
    "Anki.Vector.RobotInterface.ExecutePath executePath union property."
    msgbuffers.safety_check_tag('executePath', self._tag, self.Tag.executePath, self._tags_by_value)
    return self._data

  @executePath.setter
  def executePath(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.executePath', value, Anki.Vector.RobotInterface.ExecutePath)
    self._tag = self.Tag.executePath

  @property
  def dockWithObject(self):
    "Anki.Vector.DockWithObject dockWithObject union property."
    msgbuffers.safety_check_tag('dockWithObject', self._tag, self.Tag.dockWithObject, self._tags_by_value)
    return self._data

  @dockWithObject.setter
  def dockWithObject(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.dockWithObject', value, Anki.Vector.DockWithObject)
    self._tag = self.Tag.dockWithObject

  @property
  def abortDocking(self):
    "Anki.Vector.AbortDocking abortDocking union property."
    msgbuffers.safety_check_tag('abortDocking', self._tag, self.Tag.abortDocking, self._tags_by_value)
    return self._data

  @abortDocking.setter
  def abortDocking(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.abortDocking', value, Anki.Vector.AbortDocking)
    self._tag = self.Tag.abortDocking

  @property
  def placeObjectOnGround(self):
    "Anki.Vector.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(
      'EngineToRobot.placeObjectOnGround', value, Anki.Vector.PlaceObjectOnGround)
    self._tag = self.Tag.placeObjectOnGround

  @property
  def dockingErrorSignal(self):
    "Anki.Vector.DockingErrorSignal dockingErrorSignal union property."
    msgbuffers.safety_check_tag('dockingErrorSignal', self._tag, self.Tag.dockingErrorSignal, self._tags_by_value)
    return self._data

  @dockingErrorSignal.setter
  def dockingErrorSignal(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.dockingErrorSignal', value, Anki.Vector.DockingErrorSignal)
    self._tag = self.Tag.dockingErrorSignal

  @property
  def setCarryState(self):
    "Anki.Vector.CarryStateUpdate setCarryState union property."
    msgbuffers.safety_check_tag('setCarryState', self._tag, self.Tag.setCarryState, self._tags_by_value)
    return self._data

  @setCarryState.setter
  def setCarryState(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.setCarryState', value, Anki.Vector.CarryStateUpdate)
    self._tag = self.Tag.setCarryState

  @property
  def cameraFOVInfo(self):
    "Anki.Vector.CameraFOVInfo cameraFOVInfo union property."
    msgbuffers.safety_check_tag('cameraFOVInfo', self._tag, self.Tag.cameraFOVInfo, self._tags_by_value)
    return self._data

  @cameraFOVInfo.setter
  def cameraFOVInfo(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.cameraFOVInfo', value, Anki.Vector.CameraFOVInfo)
    self._tag = self.Tag.cameraFOVInfo

  @property
  def absLocalizationUpdate(self):
    "Anki.Vector.RobotInterface.AbsoluteLocalizationUpdate absLocalizationUpdate union property."
    msgbuffers.safety_check_tag('absLocalizationUpdate', self._tag, self.Tag.absLocalizationUpdate, self._tags_by_value)
    return self._data

  @absLocalizationUpdate.setter
  def absLocalizationUpdate(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.absLocalizationUpdate', value, Anki.Vector.RobotInterface.AbsoluteLocalizationUpdate)
    self._tag = self.Tag.absLocalizationUpdate

  @property
  def forceDelocalizeSimulatedRobot(self):
    "Anki.Vector.RobotInterface.ForceDelocalizeSimulatedRobot forceDelocalizeSimulatedRobot union property."
    msgbuffers.safety_check_tag('forceDelocalizeSimulatedRobot', self._tag, self.Tag.forceDelocalizeSimulatedRobot, self._tags_by_value)
    return self._data

  @forceDelocalizeSimulatedRobot.setter
  def forceDelocalizeSimulatedRobot(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.forceDelocalizeSimulatedRobot', value, Anki.Vector.RobotInterface.ForceDelocalizeSimulatedRobot)
    self._tag = self.Tag.forceDelocalizeSimulatedRobot

  @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(
      'EngineToRobot.imuRequest', value, Anki.Vector.IMURequest)
    self._tag = self.Tag.imuRequest

  @property
  def checkLiftLoad(self):
    "Anki.Vector.RobotInterface.CheckLiftLoad checkLiftLoad union property."
    msgbuffers.safety_check_tag('checkLiftLoad', self._tag, self.Tag.checkLiftLoad, self._tags_by_value)
    return self._data

  @checkLiftLoad.setter
  def checkLiftLoad(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.checkLiftLoad', value, Anki.Vector.RobotInterface.CheckLiftLoad)
    self._tag = self.Tag.checkLiftLoad

  @property
  def setCliffDetectThresholds(self):
    "Anki.Vector.SetCliffDetectThresholds setCliffDetectThresholds union property."
    msgbuffers.safety_check_tag('setCliffDetectThresholds', self._tag, self.Tag.setCliffDetectThresholds, self._tags_by_value)
    return self._data

  @setCliffDetectThresholds.setter
  def setCliffDetectThresholds(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.setCliffDetectThresholds', value, Anki.Vector.SetCliffDetectThresholds)
    self._tag = self.Tag.setCliffDetectThresholds

  @property
  def setWhiteDetectThresholds(self):
    "Anki.Vector.SetWhiteDetectThresholds setWhiteDetectThresholds union property."
    msgbuffers.safety_check_tag('setWhiteDetectThresholds', self._tag, self.Tag.setWhiteDetectThresholds, self._tags_by_value)
    return self._data

  @setWhiteDetectThresholds.setter
  def setWhiteDetectThresholds(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.setWhiteDetectThresholds', value, Anki.Vector.SetWhiteDetectThresholds)
    self._tag = self.Tag.setWhiteDetectThresholds

  @property
  def startMotorCalibration(self):
    "Anki.Vector.RobotInterface.StartMotorCalibration startMotorCalibration union property."
    msgbuffers.safety_check_tag('startMotorCalibration', self._tag, self.Tag.startMotorCalibration, self._tags_by_value)
    return self._data

  @startMotorCalibration.setter
  def startMotorCalibration(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.startMotorCalibration', value, Anki.Vector.RobotInterface.StartMotorCalibration)
    self._tag = self.Tag.startMotorCalibration

  @property
  def enableStopOnCliff(self):
    "Anki.Vector.RobotInterface.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(
      'EngineToRobot.enableStopOnCliff', value, Anki.Vector.RobotInterface.EnableStopOnCliff)
    self._tag = self.Tag.enableStopOnCliff

  @property
  def enableBraceWhenFalling(self):
    "Anki.Vector.RobotInterface.EnableBraceWhenFalling enableBraceWhenFalling union property."
    msgbuffers.safety_check_tag('enableBraceWhenFalling', self._tag, self.Tag.enableBraceWhenFalling, self._tags_by_value)
    return self._data

  @enableBraceWhenFalling.setter
  def enableBraceWhenFalling(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.enableBraceWhenFalling', value, Anki.Vector.RobotInterface.EnableBraceWhenFalling)
    self._tag = self.Tag.enableBraceWhenFalling

  @property
  def robotStoppedAck(self):
    "Anki.Vector.RobotInterface.RobotStoppedAck robotStoppedAck union property."
    msgbuffers.safety_check_tag('robotStoppedAck', self._tag, self.Tag.robotStoppedAck, self._tags_by_value)
    return self._data

  @robotStoppedAck.setter
  def robotStoppedAck(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.robotStoppedAck', value, Anki.Vector.RobotInterface.RobotStoppedAck)
    self._tag = self.Tag.robotStoppedAck

  @property
  def cliffAlignToWhiteAction(self):
    "Anki.Vector.RobotInterface.CliffAlignToWhiteAction cliffAlignToWhiteAction union property."
    msgbuffers.safety_check_tag('cliffAlignToWhiteAction', self._tag, self.Tag.cliffAlignToWhiteAction, self._tags_by_value)
    return self._data

  @cliffAlignToWhiteAction.setter
  def cliffAlignToWhiteAction(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.cliffAlignToWhiteAction', value, Anki.Vector.RobotInterface.CliffAlignToWhiteAction)
    self._tag = self.Tag.cliffAlignToWhiteAction

  @property
  def enableStopOnWhite(self):
    "Anki.Vector.RobotInterface.EnableStopOnWhite enableStopOnWhite union property."
    msgbuffers.safety_check_tag('enableStopOnWhite', self._tag, self.Tag.enableStopOnWhite, self._tags_by_value)
    return self._data

  @enableStopOnWhite.setter
  def enableStopOnWhite(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.enableStopOnWhite', value, Anki.Vector.RobotInterface.EnableStopOnWhite)
    self._tag = self.Tag.enableStopOnWhite

  @property
  def playAnim(self):
    "Anki.Vector.RobotInterface.PlayAnim playAnim union property."
    msgbuffers.safety_check_tag('playAnim', self._tag, self.Tag.playAnim, self._tags_by_value)
    return self._data

  @playAnim.setter
  def playAnim(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.playAnim', value, Anki.Vector.RobotInterface.PlayAnim)
    self._tag = self.Tag.playAnim

  @property
  def setFullAnimTrackLockState(self):
    "Anki.Vector.RobotInterface.SetFullAnimTrackLockState setFullAnimTrackLockState union property."
    msgbuffers.safety_check_tag('setFullAnimTrackLockState', self._tag, self.Tag.setFullAnimTrackLockState, self._tags_by_value)
    return self._data

  @setFullAnimTrackLockState.setter
  def setFullAnimTrackLockState(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.setFullAnimTrackLockState', value, Anki.Vector.RobotInterface.SetFullAnimTrackLockState)
    self._tag = self.Tag.setFullAnimTrackLockState

  @property
  def addAnim(self):
    "Anki.Vector.RobotInterface.AddAnim addAnim union property."
    msgbuffers.safety_check_tag('addAnim', self._tag, self.Tag.addAnim, self._tags_by_value)
    return self._data

  @addAnim.setter
  def addAnim(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.addAnim', value, Anki.Vector.RobotInterface.AddAnim)
    self._tag = self.Tag.addAnim

  @property
  def abortAnimation(self):
    "Anki.Vector.RobotInterface.AbortAnimation abortAnimation union property."
    msgbuffers.safety_check_tag('abortAnimation', self._tag, self.Tag.abortAnimation, self._tags_by_value)
    return self._data

  @abortAnimation.setter
  def abortAnimation(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.abortAnimation', value, Anki.Vector.RobotInterface.AbortAnimation)
    self._tag = self.Tag.abortAnimation

  @property
  def setLocale(self):
    "Anki.Vector.RobotInterface.SetLocale setLocale union property."
    msgbuffers.safety_check_tag('setLocale', self._tag, self.Tag.setLocale, self._tags_by_value)
    return self._data

  @setLocale.setter
  def setLocale(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.setLocale', value, Anki.Vector.RobotInterface.SetLocale)
    self._tag = self.Tag.setLocale

  @property
  def drawTextOnScreen(self):
    "Anki.Vector.RobotInterface.DrawTextOnScreen drawTextOnScreen union property."
    msgbuffers.safety_check_tag('drawTextOnScreen', self._tag, self.Tag.drawTextOnScreen, self._tags_by_value)
    return self._data

  @drawTextOnScreen.setter
  def drawTextOnScreen(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.drawTextOnScreen', value, Anki.Vector.RobotInterface.DrawTextOnScreen)
    self._tag = self.Tag.drawTextOnScreen

  @property
  def displayProceduralFace(self):
    "Anki.Vector.RobotInterface.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(
      'EngineToRobot.displayProceduralFace', value, Anki.Vector.RobotInterface.DisplayProceduralFace)
    self._tag = self.Tag.displayProceduralFace

  @property
  def setFaceHue(self):
    "Anki.Vector.RobotInterface.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(
      'EngineToRobot.setFaceHue', value, Anki.Vector.RobotInterface.SetFaceHue)
    self._tag = self.Tag.setFaceHue

  @property
  def setFaceSaturation(self):
    "Anki.Vector.RobotInterface.SetFaceSaturation setFaceSaturation union property."
    msgbuffers.safety_check_tag('setFaceSaturation', self._tag, self.Tag.setFaceSaturation, self._tags_by_value)
    return self._data

  @setFaceSaturation.setter
  def setFaceSaturation(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.setFaceSaturation', value, Anki.Vector.RobotInterface.SetFaceSaturation)
    self._tag = self.Tag.setFaceSaturation

  @property
  def displayFaceImageBinaryChunk(self):
    "Anki.Vector.RobotInterface.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(
      'EngineToRobot.displayFaceImageBinaryChunk', value, Anki.Vector.RobotInterface.DisplayFaceImageBinaryChunk)
    self._tag = self.Tag.displayFaceImageBinaryChunk

  @property
  def displayFaceImageRGBChunk(self):
    "Anki.Vector.RobotInterface.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(
      'EngineToRobot.displayFaceImageRGBChunk', value, Anki.Vector.RobotInterface.DisplayFaceImageRGBChunk)
    self._tag = self.Tag.displayFaceImageRGBChunk

  @property
  def setKeepFaceAliveFocus(self):
    "Anki.Vector.RobotInterface.SetKeepFaceAliveFocus setKeepFaceAliveFocus union property."
    msgbuffers.safety_check_tag('setKeepFaceAliveFocus', self._tag, self.Tag.setKeepFaceAliveFocus, self._tags_by_value)
    return self._data

  @setKeepFaceAliveFocus.setter
  def setKeepFaceAliveFocus(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.setKeepFaceAliveFocus', value, Anki.Vector.RobotInterface.SetKeepFaceAliveFocus)
    self._tag = self.Tag.setKeepFaceAliveFocus

  @property
  def enableKeepFaceAlive(self):
    "Anki.Vector.RobotInterface.EnableKeepFaceAlive enableKeepFaceAlive union property."
    msgbuffers.safety_check_tag('enableKeepFaceAlive', self._tag, self.Tag.enableKeepFaceAlive, self._tags_by_value)
    return self._data

  @enableKeepFaceAlive.setter
  def enableKeepFaceAlive(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.enableKeepFaceAlive', value, Anki.Vector.RobotInterface.EnableKeepFaceAlive)
    self._tag = self.Tag.enableKeepFaceAlive

  @property
  def addOrUpdateEyeShift(self):
    "Anki.Vector.RobotInterface.AddOrUpdateEyeShift addOrUpdateEyeShift union property."
    msgbuffers.safety_check_tag('addOrUpdateEyeShift', self._tag, self.Tag.addOrUpdateEyeShift, self._tags_by_value)
    return self._data

  @addOrUpdateEyeShift.setter
  def addOrUpdateEyeShift(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.addOrUpdateEyeShift', value, Anki.Vector.RobotInterface.AddOrUpdateEyeShift)
    self._tag = self.Tag.addOrUpdateEyeShift

  @property
  def removeEyeShift(self):
    "Anki.Vector.RobotInterface.RemoveEyeShift removeEyeShift union property."
    msgbuffers.safety_check_tag('removeEyeShift', self._tag, self.Tag.removeEyeShift, self._tags_by_value)
    return self._data

  @removeEyeShift.setter
  def removeEyeShift(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.removeEyeShift', value, Anki.Vector.RobotInterface.RemoveEyeShift)
    self._tag = self.Tag.removeEyeShift

  @property
  def addSquint(self):
    "Anki.Vector.RobotInterface.AddSquint addSquint union property."
    msgbuffers.safety_check_tag('addSquint', self._tag, self.Tag.addSquint, self._tags_by_value)
    return self._data

  @addSquint.setter
  def addSquint(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.addSquint', value, Anki.Vector.RobotInterface.AddSquint)
    self._tag = self.Tag.addSquint

  @property
  def removeSquint(self):
    "Anki.Vector.RobotInterface.RemoveSquint removeSquint union property."
    msgbuffers.safety_check_tag('removeSquint', self._tag, self.Tag.removeSquint, self._tags_by_value)
    return self._data

  @removeSquint.setter
  def removeSquint(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.removeSquint', value, Anki.Vector.RobotInterface.RemoveSquint)
    self._tag = self.Tag.removeSquint

  @property
  def displayFaceImageGrayscaleChunk(self):
    "Anki.Vector.RobotInterface.DisplayFaceImageGrayscaleChunk displayFaceImageGrayscaleChunk union property."
    msgbuffers.safety_check_tag('displayFaceImageGrayscaleChunk', self._tag, self.Tag.displayFaceImageGrayscaleChunk, self._tags_by_value)
    return self._data

  @displayFaceImageGrayscaleChunk.setter
  def displayFaceImageGrayscaleChunk(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.displayFaceImageGrayscaleChunk', value, Anki.Vector.RobotInterface.DisplayFaceImageGrayscaleChunk)
    self._tag = self.Tag.displayFaceImageGrayscaleChunk

  @property
  def playAnimWithSpriteBoxRemaps(self):
    "Anki.Vector.RobotInterface.PlayAnimWithSpriteBoxRemaps playAnimWithSpriteBoxRemaps union property."
    msgbuffers.safety_check_tag('playAnimWithSpriteBoxRemaps', self._tag, self.Tag.playAnimWithSpriteBoxRemaps, self._tags_by_value)
    return self._data

  @playAnimWithSpriteBoxRemaps.setter
  def playAnimWithSpriteBoxRemaps(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.playAnimWithSpriteBoxRemaps', value, Anki.Vector.RobotInterface.PlayAnimWithSpriteBoxRemaps)
    self._tag = self.Tag.playAnimWithSpriteBoxRemaps

  @property
  def playAnimWithSpriteBoxKeyFrames(self):
    "Anki.Vector.RobotInterface.PlayAnimWithSpriteBoxKeyFrames playAnimWithSpriteBoxKeyFrames union property."
    msgbuffers.safety_check_tag('playAnimWithSpriteBoxKeyFrames', self._tag, self.Tag.playAnimWithSpriteBoxKeyFrames, self._tags_by_value)
    return self._data

  @playAnimWithSpriteBoxKeyFrames.setter
  def playAnimWithSpriteBoxKeyFrames(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.playAnimWithSpriteBoxKeyFrames', value, Anki.Vector.RobotInterface.PlayAnimWithSpriteBoxKeyFrames)
    self._tag = self.Tag.playAnimWithSpriteBoxKeyFrames

  @property
  def addSpriteBoxKeyFrames(self):
    "Anki.Vector.RobotInterface.AddSpriteBoxKeyFrames addSpriteBoxKeyFrames union property."
    msgbuffers.safety_check_tag('addSpriteBoxKeyFrames', self._tag, self.Tag.addSpriteBoxKeyFrames, self._tags_by_value)
    return self._data

  @addSpriteBoxKeyFrames.setter
  def addSpriteBoxKeyFrames(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.addSpriteBoxKeyFrames', value, Anki.Vector.RobotInterface.AddSpriteBoxKeyFrames)
    self._tag = self.Tag.addSpriteBoxKeyFrames

  @property
  def enableMirrorModeScreen(self):
    "Anki.Vector.RobotInterface.EnableMirrorModeScreen enableMirrorModeScreen union property."
    msgbuffers.safety_check_tag('enableMirrorModeScreen', self._tag, self.Tag.enableMirrorModeScreen, self._tags_by_value)
    return self._data

  @enableMirrorModeScreen.setter
  def enableMirrorModeScreen(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.enableMirrorModeScreen', value, Anki.Vector.RobotInterface.EnableMirrorModeScreen)
    self._tag = self.Tag.enableMirrorModeScreen

  @property
  def setButtonWakeWord(self):
    "Anki.Vector.RobotInterface.SetButtonWakeWord setButtonWakeWord union property."
    msgbuffers.safety_check_tag('setButtonWakeWord', self._tag, self.Tag.setButtonWakeWord, self._tags_by_value)
    return self._data

  @setButtonWakeWord.setter
  def setButtonWakeWord(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.setButtonWakeWord', value, Anki.Vector.RobotInterface.SetButtonWakeWord)
    self._tag = self.Tag.setButtonWakeWord

  @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(
      'EngineToRobot.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(
      'EngineToRobot.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(
      'EngineToRobot.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(
      'EngineToRobot.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(
      'EngineToRobot.postAudioParameter', value, Anki.AudioEngine.Multiplexer.PostAudioParameter)
    self._tag = self.Tag.postAudioParameter

  @property
  def externalAudioPrepare(self):
    "Anki.Vector.RobotInterface.ExternalAudioPrepare externalAudioPrepare union property."
    msgbuffers.safety_check_tag('externalAudioPrepare', self._tag, self.Tag.externalAudioPrepare, self._tags_by_value)
    return self._data

  @externalAudioPrepare.setter
  def externalAudioPrepare(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.externalAudioPrepare', value, Anki.Vector.RobotInterface.ExternalAudioPrepare)
    self._tag = self.Tag.externalAudioPrepare

  @property
  def externalAudioChunk(self):
    "Anki.Vector.RobotInterface.ExternalAudioChunk externalAudioChunk union property."
    msgbuffers.safety_check_tag('externalAudioChunk', self._tag, self.Tag.externalAudioChunk, self._tags_by_value)
    return self._data

  @externalAudioChunk.setter
  def externalAudioChunk(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.externalAudioChunk', value, Anki.Vector.RobotInterface.ExternalAudioChunk)
    self._tag = self.Tag.externalAudioChunk

  @property
  def externalAudioComplete(self):
    "Anki.Vector.RobotInterface.ExternalAudioComplete externalAudioComplete union property."
    msgbuffers.safety_check_tag('externalAudioComplete', self._tag, self.Tag.externalAudioComplete, self._tags_by_value)
    return self._data

  @externalAudioComplete.setter
  def externalAudioComplete(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.externalAudioComplete', value, Anki.Vector.RobotInterface.ExternalAudioComplete)
    self._tag = self.Tag.externalAudioComplete

  @property
  def externalAudioCancel(self):
    "Anki.Vector.RobotInterface.ExternalAudioCancel externalAudioCancel union property."
    msgbuffers.safety_check_tag('externalAudioCancel', self._tag, self.Tag.externalAudioCancel, self._tags_by_value)
    return self._data

  @externalAudioCancel.setter
  def externalAudioCancel(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.externalAudioCancel', value, Anki.Vector.RobotInterface.ExternalAudioCancel)
    self._tag = self.Tag.externalAudioCancel

  @property
  def fakeWakeWordFromExternalInterface(self):
    "Anki.Vector.RobotInterface.FakeWakeWordFromExternalInterface fakeWakeWordFromExternalInterface union property."
    msgbuffers.safety_check_tag('fakeWakeWordFromExternalInterface', self._tag, self.Tag.fakeWakeWordFromExternalInterface, self._tags_by_value)
    return self._data

  @fakeWakeWordFromExternalInterface.setter
  def fakeWakeWordFromExternalInterface(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.fakeWakeWordFromExternalInterface', value, Anki.Vector.RobotInterface.FakeWakeWordFromExternalInterface)
    self._tag = self.Tag.fakeWakeWordFromExternalInterface

  @property
  def showUrlFace(self):
    "Anki.Vector.RobotInterface.ShowUrlFace showUrlFace union property."
    msgbuffers.safety_check_tag('showUrlFace', self._tag, self.Tag.showUrlFace, self._tags_by_value)
    return self._data

  @showUrlFace.setter
  def showUrlFace(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.showUrlFace', value, Anki.Vector.RobotInterface.ShowUrlFace)
    self._tag = self.Tag.showUrlFace

  @property
  def exitCCScreen(self):
    "Anki.Vector.RobotInterface.ExitCCScreen exitCCScreen union property."
    msgbuffers.safety_check_tag('exitCCScreen', self._tag, self.Tag.exitCCScreen, self._tags_by_value)
    return self._data

  @exitCCScreen.setter
  def exitCCScreen(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.exitCCScreen', value, Anki.Vector.RobotInterface.ExitCCScreen)
    self._tag = self.Tag.exitCCScreen

  @property
  def setDebugConsoleVarMessage(self):
    "Anki.Vector.RobotInterface.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(
      'EngineToRobot.setDebugConsoleVarMessage', value, Anki.Vector.RobotInterface.SetDebugConsoleVarMessage)
    self._tag = self.Tag.setDebugConsoleVarMessage

  @property
  def runDebugConsoleFuncMessage(self):
    "Anki.Vector.RobotInterface.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(
      'EngineToRobot.runDebugConsoleFuncMessage', value, Anki.Vector.RobotInterface.RunDebugConsoleFuncMessage)
    self._tag = self.Tag.runDebugConsoleFuncMessage

  @property
  def textToSpeechPrepare(self):
    "Anki.Vector.RobotInterface.TextToSpeechPrepare textToSpeechPrepare union property."
    msgbuffers.safety_check_tag('textToSpeechPrepare', self._tag, self.Tag.textToSpeechPrepare, self._tags_by_value)
    return self._data

  @textToSpeechPrepare.setter
  def textToSpeechPrepare(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.textToSpeechPrepare', value, Anki.Vector.RobotInterface.TextToSpeechPrepare)
    self._tag = self.Tag.textToSpeechPrepare

  @property
  def textToSpeechPlay(self):
    "Anki.Vector.RobotInterface.TextToSpeechPlay textToSpeechPlay union property."
    msgbuffers.safety_check_tag('textToSpeechPlay', self._tag, self.Tag.textToSpeechPlay, self._tags_by_value)
    return self._data

  @textToSpeechPlay.setter
  def textToSpeechPlay(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.textToSpeechPlay', value, Anki.Vector.RobotInterface.TextToSpeechPlay)
    self._tag = self.Tag.textToSpeechPlay

  @property
  def textToSpeechCancel(self):
    "Anki.Vector.RobotInterface.TextToSpeechCancel textToSpeechCancel union property."
    msgbuffers.safety_check_tag('textToSpeechCancel', self._tag, self.Tag.textToSpeechCancel, self._tags_by_value)
    return self._data

  @textToSpeechCancel.setter
  def textToSpeechCancel(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.textToSpeechCancel', value, Anki.Vector.RobotInterface.TextToSpeechCancel)
    self._tag = self.Tag.textToSpeechCancel

  @property
  def startRecordingMicsRaw(self):
    "Anki.Vector.RobotInterface.StartRecordingMicsRaw startRecordingMicsRaw union property."
    msgbuffers.safety_check_tag('startRecordingMicsRaw', self._tag, self.Tag.startRecordingMicsRaw, self._tags_by_value)
    return self._data

  @startRecordingMicsRaw.setter
  def startRecordingMicsRaw(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.startRecordingMicsRaw', value, Anki.Vector.RobotInterface.StartRecordingMicsRaw)
    self._tag = self.Tag.startRecordingMicsRaw

  @property
  def startRecordingMicsProcessed(self):
    "Anki.Vector.RobotInterface.StartRecordingMicsProcessed startRecordingMicsProcessed union property."
    msgbuffers.safety_check_tag('startRecordingMicsProcessed', self._tag, self.Tag.startRecordingMicsProcessed, self._tags_by_value)
    return self._data

  @startRecordingMicsProcessed.setter
  def startRecordingMicsProcessed(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.startRecordingMicsProcessed', value, Anki.Vector.RobotInterface.StartRecordingMicsProcessed)
    self._tag = self.Tag.startRecordingMicsProcessed

  @property
  def playbackAudioStart(self):
    "Anki.Vector.RobotInterface.StartPlaybackAudio playbackAudioStart union property."
    msgbuffers.safety_check_tag('playbackAudioStart', self._tag, self.Tag.playbackAudioStart, self._tags_by_value)
    return self._data

  @playbackAudioStart.setter
  def playbackAudioStart(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.playbackAudioStart', value, Anki.Vector.RobotInterface.StartPlaybackAudio)
    self._tag = self.Tag.playbackAudioStart

  @property
  def startWakeWordlessStreaming(self):
    "Anki.Vector.RobotInterface.StartWakeWordlessStreaming startWakeWordlessStreaming union property."
    msgbuffers.safety_check_tag('startWakeWordlessStreaming', self._tag, self.Tag.startWakeWordlessStreaming, self._tags_by_value)
    return self._data

  @startWakeWordlessStreaming.setter
  def startWakeWordlessStreaming(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.startWakeWordlessStreaming', value, Anki.Vector.RobotInterface.StartWakeWordlessStreaming)
    self._tag = self.Tag.startWakeWordlessStreaming

  @property
  def setTriggerWordResponse(self):
    "Anki.Vector.RobotInterface.SetTriggerWordResponse setTriggerWordResponse union property."
    msgbuffers.safety_check_tag('setTriggerWordResponse', self._tag, self.Tag.setTriggerWordResponse, self._tags_by_value)
    return self._data

  @setTriggerWordResponse.setter
  def setTriggerWordResponse(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.setTriggerWordResponse', value, Anki.Vector.RobotInterface.SetTriggerWordResponse)
    self._tag = self.Tag.setTriggerWordResponse

  @property
  def setAlexaUXResponses(self):
    "Anki.Vector.RobotInterface.SetAlexaUXResponses setAlexaUXResponses union property."
    msgbuffers.safety_check_tag('setAlexaUXResponses', self._tag, self.Tag.setAlexaUXResponses, self._tags_by_value)
    return self._data

  @setAlexaUXResponses.setter
  def setAlexaUXResponses(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.setAlexaUXResponses', value, Anki.Vector.RobotInterface.SetAlexaUXResponses)
    self._tag = self.Tag.setAlexaUXResponses

  @property
  def resetBeatDetector(self):
    "Anki.Vector.RobotInterface.ResetBeatDetector resetBeatDetector union property."
    msgbuffers.safety_check_tag('resetBeatDetector', self._tag, self.Tag.resetBeatDetector, self._tags_by_value)
    return self._data

  @resetBeatDetector.setter
  def resetBeatDetector(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.resetBeatDetector', value, Anki.Vector.RobotInterface.ResetBeatDetector)
    self._tag = self.Tag.resetBeatDetector

  @property
  def setAlexaUsage(self):
    "Anki.Vector.RobotInterface.SetAlexaUsage setAlexaUsage union property."
    msgbuffers.safety_check_tag('setAlexaUsage', self._tag, self.Tag.setAlexaUsage, self._tags_by_value)
    return self._data

  @setAlexaUsage.setter
  def setAlexaUsage(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.setAlexaUsage', value, Anki.Vector.RobotInterface.SetAlexaUsage)
    self._tag = self.Tag.setAlexaUsage

  @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(
      'EngineToRobot.setConnectionStatus', value, Anki.Vector.SwitchboardInterface.SetConnectionStatus)
    self._tag = self.Tag.setConnectionStatus

  @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(
      'EngineToRobot.setBLEPin', value, Anki.Vector.SwitchboardInterface.SetBLEPin)
    self._tag = self.Tag.setBLEPin

  @property
  def alterStreamingAnimation(self):
    "Anki.Vector.RobotInterface.AlterStreamingAnimationAtTime alterStreamingAnimation union property."
    msgbuffers.safety_check_tag('alterStreamingAnimation', self._tag, self.Tag.alterStreamingAnimation, self._tags_by_value)
    return self._data

  @alterStreamingAnimation.setter
  def alterStreamingAnimation(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.alterStreamingAnimation', value, Anki.Vector.RobotInterface.AlterStreamingAnimationAtTime)
    self._tag = self.Tag.alterStreamingAnimation

  @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(
      'EngineToRobot.sendBLEConnectionStatus', value, Anki.Vector.SwitchboardInterface.SendBLEConnectionStatus)
    self._tag = self.Tag.sendBLEConnectionStatus

  @property
  def selfTestEnd(self):
    "Anki.Vector.RobotInterface.SelfTestEnd selfTestEnd union property."
    msgbuffers.safety_check_tag('selfTestEnd', self._tag, self.Tag.selfTestEnd, self._tags_by_value)
    return self._data

  @selfTestEnd.setter
  def selfTestEnd(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.selfTestEnd', value, Anki.Vector.RobotInterface.SelfTestEnd)
    self._tag = self.Tag.selfTestEnd

  @property
  def acousticTestEnabled(self):
    "Anki.Vector.RobotInterface.AcousticTestEnabled acousticTestEnabled union property."
    msgbuffers.safety_check_tag('acousticTestEnabled', self._tag, self.Tag.acousticTestEnabled, self._tags_by_value)
    return self._data

  @acousticTestEnabled.setter
  def acousticTestEnabled(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.acousticTestEnabled', value, Anki.Vector.RobotInterface.AcousticTestEnabled)
    self._tag = self.Tag.acousticTestEnabled

  @property
  def rangeDataToDisplay(self):
    "Anki.Vector.RobotInterface.RangeDataToDisplay rangeDataToDisplay union property."
    msgbuffers.safety_check_tag('rangeDataToDisplay', self._tag, self.Tag.rangeDataToDisplay, self._tags_by_value)
    return self._data

  @rangeDataToDisplay.setter
  def rangeDataToDisplay(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.rangeDataToDisplay', value, Anki.Vector.RobotInterface.RangeDataToDisplay)
    self._tag = self.Tag.rangeDataToDisplay

  @property
  def setLCDBrightnessLevel(self):
    "Anki.Vector.RobotInterface.SetLCDBrightnessLevel setLCDBrightnessLevel union property."
    msgbuffers.safety_check_tag('setLCDBrightnessLevel', self._tag, self.Tag.setLCDBrightnessLevel, self._tags_by_value)
    return self._data

  @setLCDBrightnessLevel.setter
  def setLCDBrightnessLevel(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.setLCDBrightnessLevel', value, Anki.Vector.RobotInterface.SetLCDBrightnessLevel)
    self._tag = self.Tag.setLCDBrightnessLevel

  @property
  def batteryStatus(self):
    "Anki.Vector.RobotInterface.BatteryStatus batteryStatus union property."
    msgbuffers.safety_check_tag('batteryStatus', self._tag, self.Tag.batteryStatus, self._tags_by_value)
    return self._data

  @batteryStatus.setter
  def batteryStatus(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.batteryStatus', value, Anki.Vector.RobotInterface.BatteryStatus)
    self._tag = self.Tag.batteryStatus

  @property
  def triggerBackpackAnimation(self):
    "Anki.Vector.RobotInterface.TriggerBackpackAnimation triggerBackpackAnimation union property."
    msgbuffers.safety_check_tag('triggerBackpackAnimation', self._tag, self.Tag.triggerBackpackAnimation, self._tags_by_value)
    return self._data

  @triggerBackpackAnimation.setter
  def triggerBackpackAnimation(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.triggerBackpackAnimation', value, Anki.Vector.RobotInterface.TriggerBackpackAnimation)
    self._tag = self.Tag.triggerBackpackAnimation

  @property
  def engineFullyLoaded(self):
    "Anki.Vector.RobotInterface.EngineFullyLoaded engineFullyLoaded union property."
    msgbuffers.safety_check_tag('engineFullyLoaded', self._tag, self.Tag.engineFullyLoaded, self._tags_by_value)
    return self._data

  @engineFullyLoaded.setter
  def engineFullyLoaded(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.engineFullyLoaded', value, Anki.Vector.RobotInterface.EngineFullyLoaded)
    self._tag = self.Tag.engineFullyLoaded

  @property
  def checkCloudConnectivity(self):
    "Anki.Vector.RobotInterface.CheckCloudConnectivity checkCloudConnectivity union property."
    msgbuffers.safety_check_tag('checkCloudConnectivity', self._tag, self.Tag.checkCloudConnectivity, self._tags_by_value)
    return self._data

  @checkCloudConnectivity.setter
  def checkCloudConnectivity(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.checkCloudConnectivity', value, Anki.Vector.RobotInterface.CheckCloudConnectivity)
    self._tag = self.Tag.checkCloudConnectivity

  @property
  def updatedSettings(self):
    "Anki.Vector.RobotInterface.UpdatedSettings updatedSettings union property."
    msgbuffers.safety_check_tag('updatedSettings', self._tag, self.Tag.updatedSettings, self._tags_by_value)
    return self._data

  @updatedSettings.setter
  def updatedSettings(self, value):
    self._data = msgbuffers.validate_object(
      'EngineToRobot.updatedSettings', value, Anki.Vector.RobotInterface.UpdatedSettings)
    self._tag = self.Tag.updatedSettings

  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 EngineToRobot from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('EngineToRobot.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 EngineToRobot 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('EngineToRobot attempted to unpack unknown tag {tag}.'.format(tag=tag))

  def pack(self):
    "Writes the current EngineToRobot, 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 EngineToRobot.')

  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 < 110:
      return self._tag_size_methods[self._tag](self._data)
    else:
      return 1

  def __str__(self):
    if 0 <= self._tag < 110:
      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 < 110:
      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(
    syncRobot=2,
    shutdown=3,
    calmPowerMode=4,
    startControllerTestMode=10,
    setControllerGains=11,
    setMotionModelParams=12,
    rollActionParams=13,
    playpenStart=14,
    printBodyData=15,
    drive=16,
    driveCurvature=17,
    moveLift=18,
    moveHead=19,
    liftHeight=20,
    headAngle=21,
    setLiftAngle=22,
    setBodyAngle=23,
    turnInPlaceAtSpeed=24,
    recordHeading=25,
    turnToRecordedHeading=26,
    enableMotorPower=27,
    stop=28,
    setBackpackLayer=29,
    setBackpackLights=30,
    setSystemLight=31,
    clearPath=32,
    appendPathSegLine=33,
    appendPathSegArc=34,
    appendPathSegPointTurn=35,
    trimPath=36,
    executePath=37,
    dockWithObject=38,
    abortDocking=39,
    placeObjectOnGround=40,
    dockingErrorSignal=42,
    setCarryState=43,
    cameraFOVInfo=44,
    absLocalizationUpdate=45,
    forceDelocalizeSimulatedRobot=46,
    imuRequest=48,
    checkLiftLoad=49,
    setCliffDetectThresholds=50,
    setWhiteDetectThresholds=57,
    startMotorCalibration=51,
    enableStopOnCliff=52,
    enableBraceWhenFalling=53,
    robotStoppedAck=54,
    cliffAlignToWhiteAction=55,
    enableStopOnWhite=56,
    playAnim=80,
    setFullAnimTrackLockState=81,
    addAnim=82,
    abortAnimation=83,
    setLocale=84,
    drawTextOnScreen=85,
    displayProceduralFace=86,
    setFaceHue=87,
    setFaceSaturation=88,
    displayFaceImageBinaryChunk=89,
    displayFaceImageRGBChunk=90,
    setKeepFaceAliveFocus=92,
    enableKeepFaceAlive=93,
    addOrUpdateEyeShift=94,
    removeEyeShift=95,
    addSquint=96,
    removeSquint=97,
    displayFaceImageGrayscaleChunk=98,
    playAnimWithSpriteBoxRemaps=99,
    playAnimWithSpriteBoxKeyFrames=100,
    addSpriteBoxKeyFrames=101,
    enableMirrorModeScreen=102,
    setButtonWakeWord=103,
    postAudioEvent=112,
    stopAllAudioEvents=113,
    postAudioGameState=114,
    postAudioSwitchState=115,
    postAudioParameter=116,
    externalAudioPrepare=117,
    externalAudioChunk=118,
    externalAudioComplete=119,
    externalAudioCancel=120,
    fakeWakeWordFromExternalInterface=128,
    showUrlFace=129,
    exitCCScreen=130,
    setDebugConsoleVarMessage=144,
    runDebugConsoleFuncMessage=145,
    textToSpeechPrepare=146,
    textToSpeechPlay=148,
    textToSpeechCancel=149,
    startRecordingMicsRaw=150,
    startRecordingMicsProcessed=151,
    playbackAudioStart=152,
    startWakeWordlessStreaming=153,
    setTriggerWordResponse=154,
    setAlexaUXResponses=155,
    resetBeatDetector=156,
    setAlexaUsage=157,
    setConnectionStatus=160,
    setBLEPin=161,
    alterStreamingAnimation=162,
    sendBLEConnectionStatus=163,
    selfTestEnd=164,
    acousticTestEnabled=165,
    rangeDataToDisplay=166,
    setLCDBrightnessLevel=170,
    batteryStatus=171,
    triggerBackpackAnimation=172,
    engineFullyLoaded=173,
    checkCloudConnectivity=174,
    updatedSettings=175,
  )

  _tags_by_value = dict()
  _tags_by_value[2] = 'syncRobot'
  _tags_by_value[3] = 'shutdown'
  _tags_by_value[4] = 'calmPowerMode'
  _tags_by_value[10] = 'startControllerTestMode'
  _tags_by_value[11] = 'setControllerGains'
  _tags_by_value[12] = 'setMotionModelParams'
  _tags_by_value[13] = 'rollActionParams'
  _tags_by_value[14] = 'playpenStart'
  _tags_by_value[15] = 'printBodyData'
  _tags_by_value[16] = 'drive'
  _tags_by_value[17] = 'driveCurvature'
  _tags_by_value[18] = 'moveLift'
  _tags_by_value[19] = 'moveHead'
  _tags_by_value[20] = 'liftHeight'
  _tags_by_value[21] = 'headAngle'
  _tags_by_value[22] = 'setLiftAngle'
  _tags_by_value[23] = 'setBodyAngle'
  _tags_by_value[24] = 'turnInPlaceAtSpeed'
  _tags_by_value[25] = 'recordHeading'
  _tags_by_value[26] = 'turnToRecordedHeading'
  _tags_by_value[27] = 'enableMotorPower'
  _tags_by_value[28] = 'stop'
  _tags_by_value[29] = 'setBackpackLayer'
  _tags_by_value[30] = 'setBackpackLights'
  _tags_by_value[31] = 'setSystemLight'
  _tags_by_value[32] = 'clearPath'
  _tags_by_value[33] = 'appendPathSegLine'
  _tags_by_value[34] = 'appendPathSegArc'
  _tags_by_value[35] = 'appendPathSegPointTurn'
  _tags_by_value[36] = 'trimPath'
  _tags_by_value[37] = 'executePath'
  _tags_by_value[38] = 'dockWithObject'
  _tags_by_value[39] = 'abortDocking'
  _tags_by_value[40] = 'placeObjectOnGround'
  _tags_by_value[42] = 'dockingErrorSignal'
  _tags_by_value[43] = 'setCarryState'
  _tags_by_value[44] = 'cameraFOVInfo'
  _tags_by_value[45] = 'absLocalizationUpdate'
  _tags_by_value[46] = 'forceDelocalizeSimulatedRobot'
  _tags_by_value[48] = 'imuRequest'
  _tags_by_value[49] = 'checkLiftLoad'
  _tags_by_value[50] = 'setCliffDetectThresholds'
  _tags_by_value[57] = 'setWhiteDetectThresholds'
  _tags_by_value[51] = 'startMotorCalibration'
  _tags_by_value[52] = 'enableStopOnCliff'
  _tags_by_value[53] = 'enableBraceWhenFalling'
  _tags_by_value[54] = 'robotStoppedAck'
  _tags_by_value[55] = 'cliffAlignToWhiteAction'
  _tags_by_value[56] = 'enableStopOnWhite'
  _tags_by_value[80] = 'playAnim'
  _tags_by_value[81] = 'setFullAnimTrackLockState'
  _tags_by_value[82] = 'addAnim'
  _tags_by_value[83] = 'abortAnimation'
  _tags_by_value[84] = 'setLocale'
  _tags_by_value[85] = 'drawTextOnScreen'
  _tags_by_value[86] = 'displayProceduralFace'
  _tags_by_value[87] = 'setFaceHue'
  _tags_by_value[88] = 'setFaceSaturation'
  _tags_by_value[89] = 'displayFaceImageBinaryChunk'
  _tags_by_value[90] = 'displayFaceImageRGBChunk'
  _tags_by_value[92] = 'setKeepFaceAliveFocus'
  _tags_by_value[93] = 'enableKeepFaceAlive'
  _tags_by_value[94] = 'addOrUpdateEyeShift'
  _tags_by_value[95] = 'removeEyeShift'
  _tags_by_value[96] = 'addSquint'
  _tags_by_value[97] = 'removeSquint'
  _tags_by_value[98] = 'displayFaceImageGrayscaleChunk'
  _tags_by_value[99] = 'playAnimWithSpriteBoxRemaps'
  _tags_by_value[100] = 'playAnimWithSpriteBoxKeyFrames'
  _tags_by_value[101] = 'addSpriteBoxKeyFrames'
  _tags_by_value[102] = 'enableMirrorModeScreen'
  _tags_by_value[103] = 'setButtonWakeWord'
  _tags_by_value[112] = 'postAudioEvent'
  _tags_by_value[113] = 'stopAllAudioEvents'
  _tags_by_value[114] = 'postAudioGameState'
  _tags_by_value[115] = 'postAudioSwitchState'
  _tags_by_value[116] = 'postAudioParameter'
  _tags_by_value[117] = 'externalAudioPrepare'
  _tags_by_value[118] = 'externalAudioChunk'
  _tags_by_value[119] = 'externalAudioComplete'
  _tags_by_value[120] = 'externalAudioCancel'
  _tags_by_value[128] = 'fakeWakeWordFromExternalInterface'
  _tags_by_value[129] = 'showUrlFace'
  _tags_by_value[130] = 'exitCCScreen'
  _tags_by_value[144] = 'setDebugConsoleVarMessage'
  _tags_by_value[145] = 'runDebugConsoleFuncMessage'
  _tags_by_value[146] = 'textToSpeechPrepare'
  _tags_by_value[148] = 'textToSpeechPlay'
  _tags_by_value[149] = 'textToSpeechCancel'
  _tags_by_value[150] = 'startRecordingMicsRaw'
  _tags_by_value[151] = 'startRecordingMicsProcessed'
  _tags_by_value[152] = 'playbackAudioStart'
  _tags_by_value[153] = 'startWakeWordlessStreaming'
  _tags_by_value[154] = 'setTriggerWordResponse'
  _tags_by_value[155] = 'setAlexaUXResponses'
  _tags_by_value[156] = 'resetBeatDetector'
  _tags_by_value[157] = 'setAlexaUsage'
  _tags_by_value[160] = 'setConnectionStatus'
  _tags_by_value[161] = 'setBLEPin'
  _tags_by_value[162] = 'alterStreamingAnimation'
  _tags_by_value[163] = 'sendBLEConnectionStatus'
  _tags_by_value[164] = 'selfTestEnd'
  _tags_by_value[165] = 'acousticTestEnabled'
  _tags_by_value[166] = 'rangeDataToDisplay'
  _tags_by_value[170] = 'setLCDBrightnessLevel'
  _tags_by_value[171] = 'batteryStatus'
  _tags_by_value[172] = 'triggerBackpackAnimation'
  _tags_by_value[173] = 'engineFullyLoaded'
  _tags_by_value[174] = 'checkCloudConnectivity'
  _tags_by_value[175] = 'updatedSettings'
  

  _tag_unpack_methods = dict()
  _tag_unpack_methods[2] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.SyncRobot.unpack_from)
  _tag_unpack_methods[3] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.Shutdown.unpack_from)
  _tag_unpack_methods[4] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.CalmPowerMode.unpack_from)
  _tag_unpack_methods[10] = lambda reader: reader.read_object(Anki.Vector.StartControllerTestMode.unpack_from)
  _tag_unpack_methods[11] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.ControllerGains.unpack_from)
  _tag_unpack_methods[12] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.SetMotionModelParams.unpack_from)
  _tag_unpack_methods[13] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.RollActionParams.unpack_from)
  _tag_unpack_methods[14] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.PlaypenStart.unpack_from)
  _tag_unpack_methods[15] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.PrintBodyData.unpack_from)
  _tag_unpack_methods[16] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.DriveWheels.unpack_from)
  _tag_unpack_methods[17] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.DriveWheelsCurvature.unpack_from)
  _tag_unpack_methods[18] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.MoveLift.unpack_from)
  _tag_unpack_methods[19] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.MoveHead.unpack_from)
  _tag_unpack_methods[20] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.SetLiftHeight.unpack_from)
  _tag_unpack_methods[21] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.SetHeadAngle.unpack_from)
  _tag_unpack_methods[22] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.SetLiftAngle.unpack_from)
  _tag_unpack_methods[23] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.SetBodyAngle.unpack_from)
  _tag_unpack_methods[24] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.TurnInPlaceAtSpeed.unpack_from)
  _tag_unpack_methods[25] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.RecordHeading.unpack_from)
  _tag_unpack_methods[26] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.TurnToRecordedHeading.unpack_from)
  _tag_unpack_methods[27] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.EnableMotorPower.unpack_from)
  _tag_unpack_methods[28] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.StopAllMotors.unpack_from)
  _tag_unpack_methods[29] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.BackpackSetLayer.unpack_from)
  _tag_unpack_methods[30] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.SetBackpackLights.unpack_from)
  _tag_unpack_methods[31] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.SetSystemLight.unpack_from)
  _tag_unpack_methods[32] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.ClearPath.unpack_from)
  _tag_unpack_methods[33] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.AppendPathSegmentLine.unpack_from)
  _tag_unpack_methods[34] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.AppendPathSegmentArc.unpack_from)
  _tag_unpack_methods[35] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.AppendPathSegmentPointTurn.unpack_from)
  _tag_unpack_methods[36] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.TrimPath.unpack_from)
  _tag_unpack_methods[37] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.ExecutePath.unpack_from)
  _tag_unpack_methods[38] = lambda reader: reader.read_object(Anki.Vector.DockWithObject.unpack_from)
  _tag_unpack_methods[39] = lambda reader: reader.read_object(Anki.Vector.AbortDocking.unpack_from)
  _tag_unpack_methods[40] = lambda reader: reader.read_object(Anki.Vector.PlaceObjectOnGround.unpack_from)
  _tag_unpack_methods[42] = lambda reader: reader.read_object(Anki.Vector.DockingErrorSignal.unpack_from)
  _tag_unpack_methods[43] = lambda reader: reader.read_object(Anki.Vector.CarryStateUpdate.unpack_from)
  _tag_unpack_methods[44] = lambda reader: reader.read_object(Anki.Vector.CameraFOVInfo.unpack_from)
  _tag_unpack_methods[45] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.AbsoluteLocalizationUpdate.unpack_from)
  _tag_unpack_methods[46] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.ForceDelocalizeSimulatedRobot.unpack_from)
  _tag_unpack_methods[48] = lambda reader: reader.read_object(Anki.Vector.IMURequest.unpack_from)
  _tag_unpack_methods[49] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.CheckLiftLoad.unpack_from)
  _tag_unpack_methods[50] = lambda reader: reader.read_object(Anki.Vector.SetCliffDetectThresholds.unpack_from)
  _tag_unpack_methods[57] = lambda reader: reader.read_object(Anki.Vector.SetWhiteDetectThresholds.unpack_from)
  _tag_unpack_methods[51] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.StartMotorCalibration.unpack_from)
  _tag_unpack_methods[52] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.EnableStopOnCliff.unpack_from)
  _tag_unpack_methods[53] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.EnableBraceWhenFalling.unpack_from)
  _tag_unpack_methods[54] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.RobotStoppedAck.unpack_from)
  _tag_unpack_methods[55] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.CliffAlignToWhiteAction.unpack_from)
  _tag_unpack_methods[56] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.EnableStopOnWhite.unpack_from)
  _tag_unpack_methods[80] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.PlayAnim.unpack_from)
  _tag_unpack_methods[81] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.SetFullAnimTrackLockState.unpack_from)
  _tag_unpack_methods[82] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.AddAnim.unpack_from)
  _tag_unpack_methods[83] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.AbortAnimation.unpack_from)
  _tag_unpack_methods[84] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.SetLocale.unpack_from)
  _tag_unpack_methods[85] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.DrawTextOnScreen.unpack_from)
  _tag_unpack_methods[86] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.DisplayProceduralFace.unpack_from)
  _tag_unpack_methods[87] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.SetFaceHue.unpack_from)
  _tag_unpack_methods[88] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.SetFaceSaturation.unpack_from)
  _tag_unpack_methods[89] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.DisplayFaceImageBinaryChunk.unpack_from)
  _tag_unpack_methods[90] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.DisplayFaceImageRGBChunk.unpack_from)
  _tag_unpack_methods[92] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.SetKeepFaceAliveFocus.unpack_from)
  _tag_unpack_methods[93] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.EnableKeepFaceAlive.unpack_from)
  _tag_unpack_methods[94] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.AddOrUpdateEyeShift.unpack_from)
  _tag_unpack_methods[95] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.RemoveEyeShift.unpack_from)
  _tag_unpack_methods[96] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.AddSquint.unpack_from)
  _tag_unpack_methods[97] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.RemoveSquint.unpack_from)
  _tag_unpack_methods[98] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.DisplayFaceImageGrayscaleChunk.unpack_from)
  _tag_unpack_methods[99] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.PlayAnimWithSpriteBoxRemaps.unpack_from)
  _tag_unpack_methods[100] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.PlayAnimWithSpriteBoxKeyFrames.unpack_from)
  _tag_unpack_methods[101] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.AddSpriteBoxKeyFrames.unpack_from)
  _tag_unpack_methods[102] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.EnableMirrorModeScreen.unpack_from)
  _tag_unpack_methods[103] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.SetButtonWakeWord.unpack_from)
  _tag_unpack_methods[112] = lambda reader: reader.read_object(Anki.AudioEngine.Multiplexer.PostAudioEvent.unpack_from)
  _tag_unpack_methods[113] = lambda reader: reader.read_object(Anki.AudioEngine.Multiplexer.StopAllAudioEvents.unpack_from)
  _tag_unpack_methods[114] = lambda reader: reader.read_object(Anki.AudioEngine.Multiplexer.PostAudioGameState.unpack_from)
  _tag_unpack_methods[115] = lambda reader: reader.read_object(Anki.AudioEngine.Multiplexer.PostAudioSwitchState.unpack_from)
  _tag_unpack_methods[116] = lambda reader: reader.read_object(Anki.AudioEngine.Multiplexer.PostAudioParameter.unpack_from)
  _tag_unpack_methods[117] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.ExternalAudioPrepare.unpack_from)
  _tag_unpack_methods[118] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.ExternalAudioChunk.unpack_from)
  _tag_unpack_methods[119] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.ExternalAudioComplete.unpack_from)
  _tag_unpack_methods[120] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.ExternalAudioCancel.unpack_from)
  _tag_unpack_methods[128] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.FakeWakeWordFromExternalInterface.unpack_from)
  _tag_unpack_methods[129] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.ShowUrlFace.unpack_from)
  _tag_unpack_methods[130] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.ExitCCScreen.unpack_from)
  _tag_unpack_methods[144] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.SetDebugConsoleVarMessage.unpack_from)
  _tag_unpack_methods[145] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.RunDebugConsoleFuncMessage.unpack_from)
  _tag_unpack_methods[146] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.TextToSpeechPrepare.unpack_from)
  _tag_unpack_methods[148] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.TextToSpeechPlay.unpack_from)
  _tag_unpack_methods[149] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.TextToSpeechCancel.unpack_from)
  _tag_unpack_methods[150] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.StartRecordingMicsRaw.unpack_from)
  _tag_unpack_methods[151] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.StartRecordingMicsProcessed.unpack_from)
  _tag_unpack_methods[152] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.StartPlaybackAudio.unpack_from)
  _tag_unpack_methods[153] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.StartWakeWordlessStreaming.unpack_from)
  _tag_unpack_methods[154] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.SetTriggerWordResponse.unpack_from)
  _tag_unpack_methods[155] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.SetAlexaUXResponses.unpack_from)
  _tag_unpack_methods[156] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.ResetBeatDetector.unpack_from)
  _tag_unpack_methods[157] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.SetAlexaUsage.unpack_from)
  _tag_unpack_methods[160] = lambda reader: reader.read_object(Anki.Vector.SwitchboardInterface.SetConnectionStatus.unpack_from)
  _tag_unpack_methods[161] = lambda reader: reader.read_object(Anki.Vector.SwitchboardInterface.SetBLEPin.unpack_from)
  _tag_unpack_methods[162] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.AlterStreamingAnimationAtTime.unpack_from)
  _tag_unpack_methods[163] = lambda reader: reader.read_object(Anki.Vector.SwitchboardInterface.SendBLEConnectionStatus.unpack_from)
  _tag_unpack_methods[164] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.SelfTestEnd.unpack_from)
  _tag_unpack_methods[165] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.AcousticTestEnabled.unpack_from)
  _tag_unpack_methods[166] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.RangeDataToDisplay.unpack_from)
  _tag_unpack_methods[170] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.SetLCDBrightnessLevel.unpack_from)
  _tag_unpack_methods[171] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.BatteryStatus.unpack_from)
  _tag_unpack_methods[172] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.TriggerBackpackAnimation.unpack_from)
  _tag_unpack_methods[173] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.EngineFullyLoaded.unpack_from)
  _tag_unpack_methods[174] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.CheckCloudConnectivity.unpack_from)
  _tag_unpack_methods[175] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.UpdatedSettings.unpack_from)
  

  _tag_pack_methods = dict()
  _tag_pack_methods[2] = 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[10] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[11] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[12] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[13] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[14] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[15] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[16] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[17] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[18] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[19] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[20] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[21] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[22] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[23] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[24] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[25] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[26] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[27] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[28] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[29] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[30] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[31] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[32] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[33] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[34] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[35] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[36] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[37] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[38] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[39] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[40] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[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[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[57] = 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[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[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[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[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[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[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[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[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_pack_methods[175] = lambda writer, value: writer.write_object(value)
  

  _tag_size_methods = dict()
  _tag_size_methods[2] = 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[10] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[11] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[12] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[13] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[14] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[15] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[16] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[17] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[18] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[19] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[20] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[21] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[22] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[23] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[24] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[25] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[26] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[27] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[28] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[29] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[30] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[31] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[32] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[33] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[34] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[35] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[36] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[37] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[38] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[39] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[40] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[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[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[57] = 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[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[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[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[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[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[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[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[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)
  _tag_size_methods[175] = lambda value: msgbuffers.size_object(value)
  

  _type_by_tag_value = dict()
  _type_by_tag_value[2] = lambda : Anki.Vector.RobotInterface.SyncRobot
  _type_by_tag_value[3] = lambda : Anki.Vector.RobotInterface.Shutdown
  _type_by_tag_value[4] = lambda : Anki.Vector.RobotInterface.CalmPowerMode
  _type_by_tag_value[10] = lambda : Anki.Vector.StartControllerTestMode
  _type_by_tag_value[11] = lambda : Anki.Vector.RobotInterface.ControllerGains
  _type_by_tag_value[12] = lambda : Anki.Vector.RobotInterface.SetMotionModelParams
  _type_by_tag_value[13] = lambda : Anki.Vector.RobotInterface.RollActionParams
  _type_by_tag_value[14] = lambda : Anki.Vector.RobotInterface.PlaypenStart
  _type_by_tag_value[15] = lambda : Anki.Vector.RobotInterface.PrintBodyData
  _type_by_tag_value[16] = lambda : Anki.Vector.RobotInterface.DriveWheels
  _type_by_tag_value[17] = lambda : Anki.Vector.RobotInterface.DriveWheelsCurvature
  _type_by_tag_value[18] = lambda : Anki.Vector.RobotInterface.MoveLift
  _type_by_tag_value[19] = lambda : Anki.Vector.RobotInterface.MoveHead
  _type_by_tag_value[20] = lambda : Anki.Vector.RobotInterface.SetLiftHeight
  _type_by_tag_value[21] = lambda : Anki.Vector.RobotInterface.SetHeadAngle
  _type_by_tag_value[22] = lambda : Anki.Vector.RobotInterface.SetLiftAngle
  _type_by_tag_value[23] = lambda : Anki.Vector.RobotInterface.SetBodyAngle
  _type_by_tag_value[24] = lambda : Anki.Vector.RobotInterface.TurnInPlaceAtSpeed
  _type_by_tag_value[25] = lambda : Anki.Vector.RobotInterface.RecordHeading
  _type_by_tag_value[26] = lambda : Anki.Vector.RobotInterface.TurnToRecordedHeading
  _type_by_tag_value[27] = lambda : Anki.Vector.RobotInterface.EnableMotorPower
  _type_by_tag_value[28] = lambda : Anki.Vector.RobotInterface.StopAllMotors
  _type_by_tag_value[29] = lambda : Anki.Vector.RobotInterface.BackpackSetLayer
  _type_by_tag_value[30] = lambda : Anki.Vector.RobotInterface.SetBackpackLights
  _type_by_tag_value[31] = lambda : Anki.Vector.RobotInterface.SetSystemLight
  _type_by_tag_value[32] = lambda : Anki.Vector.RobotInterface.ClearPath
  _type_by_tag_value[33] = lambda : Anki.Vector.RobotInterface.AppendPathSegmentLine
  _type_by_tag_value[34] = lambda : Anki.Vector.RobotInterface.AppendPathSegmentArc
  _type_by_tag_value[35] = lambda : Anki.Vector.RobotInterface.AppendPathSegmentPointTurn
  _type_by_tag_value[36] = lambda : Anki.Vector.RobotInterface.TrimPath
  _type_by_tag_value[37] = lambda : Anki.Vector.RobotInterface.ExecutePath
  _type_by_tag_value[38] = lambda : Anki.Vector.DockWithObject
  _type_by_tag_value[39] = lambda : Anki.Vector.AbortDocking
  _type_by_tag_value[40] = lambda : Anki.Vector.PlaceObjectOnGround
  _type_by_tag_value[42] = lambda : Anki.Vector.DockingErrorSignal
  _type_by_tag_value[43] = lambda : Anki.Vector.CarryStateUpdate
  _type_by_tag_value[44] = lambda : Anki.Vector.CameraFOVInfo
  _type_by_tag_value[45] = lambda : Anki.Vector.RobotInterface.AbsoluteLocalizationUpdate
  _type_by_tag_value[46] = lambda : Anki.Vector.RobotInterface.ForceDelocalizeSimulatedRobot
  _type_by_tag_value[48] = lambda : Anki.Vector.IMURequest
  _type_by_tag_value[49] = lambda : Anki.Vector.RobotInterface.CheckLiftLoad
  _type_by_tag_value[50] = lambda : Anki.Vector.SetCliffDetectThresholds
  _type_by_tag_value[57] = lambda : Anki.Vector.SetWhiteDetectThresholds
  _type_by_tag_value[51] = lambda : Anki.Vector.RobotInterface.StartMotorCalibration
  _type_by_tag_value[52] = lambda : Anki.Vector.RobotInterface.EnableStopOnCliff
  _type_by_tag_value[53] = lambda : Anki.Vector.RobotInterface.EnableBraceWhenFalling
  _type_by_tag_value[54] = lambda : Anki.Vector.RobotInterface.RobotStoppedAck
  _type_by_tag_value[55] = lambda : Anki.Vector.RobotInterface.CliffAlignToWhiteAction
  _type_by_tag_value[56] = lambda : Anki.Vector.RobotInterface.EnableStopOnWhite
  _type_by_tag_value[80] = lambda : Anki.Vector.RobotInterface.PlayAnim
  _type_by_tag_value[81] = lambda : Anki.Vector.RobotInterface.SetFullAnimTrackLockState
  _type_by_tag_value[82] = lambda : Anki.Vector.RobotInterface.AddAnim
  _type_by_tag_value[83] = lambda : Anki.Vector.RobotInterface.AbortAnimation
  _type_by_tag_value[84] = lambda : Anki.Vector.RobotInterface.SetLocale
  _type_by_tag_value[85] = lambda : Anki.Vector.RobotInterface.DrawTextOnScreen
  _type_by_tag_value[86] = lambda : Anki.Vector.RobotInterface.DisplayProceduralFace
  _type_by_tag_value[87] = lambda : Anki.Vector.RobotInterface.SetFaceHue
  _type_by_tag_value[88] = lambda : Anki.Vector.RobotInterface.SetFaceSaturation
  _type_by_tag_value[89] = lambda : Anki.Vector.RobotInterface.DisplayFaceImageBinaryChunk
  _type_by_tag_value[90] = lambda : Anki.Vector.RobotInterface.DisplayFaceImageRGBChunk
  _type_by_tag_value[92] = lambda : Anki.Vector.RobotInterface.SetKeepFaceAliveFocus
  _type_by_tag_value[93] = lambda : Anki.Vector.RobotInterface.EnableKeepFaceAlive
  _type_by_tag_value[94] = lambda : Anki.Vector.RobotInterface.AddOrUpdateEyeShift
  _type_by_tag_value[95] = lambda : Anki.Vector.RobotInterface.RemoveEyeShift
  _type_by_tag_value[96] = lambda : Anki.Vector.RobotInterface.AddSquint
  _type_by_tag_value[97] = lambda : Anki.Vector.RobotInterface.RemoveSquint
  _type_by_tag_value[98] = lambda : Anki.Vector.RobotInterface.DisplayFaceImageGrayscaleChunk
  _type_by_tag_value[99] = lambda : Anki.Vector.RobotInterface.PlayAnimWithSpriteBoxRemaps
  _type_by_tag_value[100] = lambda : Anki.Vector.RobotInterface.PlayAnimWithSpriteBoxKeyFrames
  _type_by_tag_value[101] = lambda : Anki.Vector.RobotInterface.AddSpriteBoxKeyFrames
  _type_by_tag_value[102] = lambda : Anki.Vector.RobotInterface.EnableMirrorModeScreen
  _type_by_tag_value[103] = lambda : Anki.Vector.RobotInterface.SetButtonWakeWord
  _type_by_tag_value[112] = lambda : Anki.AudioEngine.Multiplexer.PostAudioEvent
  _type_by_tag_value[113] = lambda : Anki.AudioEngine.Multiplexer.StopAllAudioEvents
  _type_by_tag_value[114] = lambda : Anki.AudioEngine.Multiplexer.PostAudioGameState
  _type_by_tag_value[115] = lambda : Anki.AudioEngine.Multiplexer.PostAudioSwitchState
  _type_by_tag_value[116] = lambda : Anki.AudioEngine.Multiplexer.PostAudioParameter
  _type_by_tag_value[117] = lambda : Anki.Vector.RobotInterface.ExternalAudioPrepare
  _type_by_tag_value[118] = lambda : Anki.Vector.RobotInterface.ExternalAudioChunk
  _type_by_tag_value[119] = lambda : Anki.Vector.RobotInterface.ExternalAudioComplete
  _type_by_tag_value[120] = lambda : Anki.Vector.RobotInterface.ExternalAudioCancel
  _type_by_tag_value[128] = lambda : Anki.Vector.RobotInterface.FakeWakeWordFromExternalInterface
  _type_by_tag_value[129] = lambda : Anki.Vector.RobotInterface.ShowUrlFace
  _type_by_tag_value[130] = lambda : Anki.Vector.RobotInterface.ExitCCScreen
  _type_by_tag_value[144] = lambda : Anki.Vector.RobotInterface.SetDebugConsoleVarMessage
  _type_by_tag_value[145] = lambda : Anki.Vector.RobotInterface.RunDebugConsoleFuncMessage
  _type_by_tag_value[146] = lambda : Anki.Vector.RobotInterface.TextToSpeechPrepare
  _type_by_tag_value[148] = lambda : Anki.Vector.RobotInterface.TextToSpeechPlay
  _type_by_tag_value[149] = lambda : Anki.Vector.RobotInterface.TextToSpeechCancel
  _type_by_tag_value[150] = lambda : Anki.Vector.RobotInterface.StartRecordingMicsRaw
  _type_by_tag_value[151] = lambda : Anki.Vector.RobotInterface.StartRecordingMicsProcessed
  _type_by_tag_value[152] = lambda : Anki.Vector.RobotInterface.StartPlaybackAudio
  _type_by_tag_value[153] = lambda : Anki.Vector.RobotInterface.StartWakeWordlessStreaming
  _type_by_tag_value[154] = lambda : Anki.Vector.RobotInterface.SetTriggerWordResponse
  _type_by_tag_value[155] = lambda : Anki.Vector.RobotInterface.SetAlexaUXResponses
  _type_by_tag_value[156] = lambda : Anki.Vector.RobotInterface.ResetBeatDetector
  _type_by_tag_value[157] = lambda : Anki.Vector.RobotInterface.SetAlexaUsage
  _type_by_tag_value[160] = lambda : Anki.Vector.SwitchboardInterface.SetConnectionStatus
  _type_by_tag_value[161] = lambda : Anki.Vector.SwitchboardInterface.SetBLEPin
  _type_by_tag_value[162] = lambda : Anki.Vector.RobotInterface.AlterStreamingAnimationAtTime
  _type_by_tag_value[163] = lambda : Anki.Vector.SwitchboardInterface.SendBLEConnectionStatus
  _type_by_tag_value[164] = lambda : Anki.Vector.RobotInterface.SelfTestEnd
  _type_by_tag_value[165] = lambda : Anki.Vector.RobotInterface.AcousticTestEnabled
  _type_by_tag_value[166] = lambda : Anki.Vector.RobotInterface.RangeDataToDisplay
  _type_by_tag_value[170] = lambda : Anki.Vector.RobotInterface.SetLCDBrightnessLevel
  _type_by_tag_value[171] = lambda : Anki.Vector.RobotInterface.BatteryStatus
  _type_by_tag_value[172] = lambda : Anki.Vector.RobotInterface.TriggerBackpackAnimation
  _type_by_tag_value[173] = lambda : Anki.Vector.RobotInterface.EngineFullyLoaded
  _type_by_tag_value[174] = lambda : Anki.Vector.RobotInterface.CheckCloudConnectivity
  _type_by_tag_value[175] = lambda : Anki.Vector.RobotInterface.UpdatedSettings
  

Anki.Vector.RobotInterface.EngineToRobot = EngineToRobot
del EngineToRobot


