"""
Autogenerated python message buffer code.
Source: clad/gateway/messageExternalToRobot.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/gateway/messageExternalToRobot.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.Vector = msgbuffers.Namespace()
Anki.Vector.Gateway = msgbuffers.Namespace()

from clad.gateway.shared import Anki as _Anki
Anki.update(_Anki.deep_clone())

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

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

  @property
  def placeHolder(self):
    "string[uint_8] placeHolder struct property."
    return self._placeHolder

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

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

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

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

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

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

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

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

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

Anki.Vector.Gateway.UiDeviceConnectionWrongVersion = UiDeviceConnectionWrongVersion
del UiDeviceConnectionWrongVersion


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


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

  __slots__ = (
    '_speed_rad_per_sec', # float_32
  )

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

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

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

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new MoveLift from the given BinaryReader."
    _speed_rad_per_sec = reader.read('f')
    return cls(_speed_rad_per_sec)

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

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

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

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

  def __len__(self):
    return (msgbuffers.size(self._speed_rad_per_sec, 'f'))

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

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

Anki.Vector.Gateway.MoveLift = MoveLift
del MoveLift


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

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

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

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

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

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

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

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

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

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new DriveArc from the given BinaryReader."
    _speed = reader.read('f')
    _accel = reader.read('f')
    _curvatureRadius_mm = reader.read('h')
    return cls(_speed, _accel, _curvatureRadius_mm)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._speed == other._speed and
        self._accel == other._accel and
        self._curvatureRadius_mm == other._curvatureRadius_mm)
    else:
      return NotImplemented

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

  def __len__(self):
    return (msgbuffers.size(self._speed, 'f') +
      msgbuffers.size(self._accel, 'f') +
      msgbuffers.size(self._curvatureRadius_mm, 'h'))

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

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

Anki.Vector.Gateway.DriveArc = DriveArc
del DriveArc


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

  __slots__ = (
    '_faceData',         # uint_16[600]
    '_numPixels',        # uint_16
    '_chunkIndex',       # uint_8
    '_numChunks',        # uint_8
    '_duration_ms',      # uint_32
    '_interruptRunning', # bool
  )

  @property
  def faceData(self):
    "uint_16[600] faceData struct property."
    return self._faceData

  @faceData.setter
  def faceData(self, value):
    self._faceData = msgbuffers.validate_farray(
      'DisplayFaceImageRGBChunk.faceData', value, 600,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 65535))

  @property
  def numPixels(self):
    "uint_16 numPixels struct property."
    return self._numPixels

  @numPixels.setter
  def numPixels(self, value):
    self._numPixels = msgbuffers.validate_integer(
      'DisplayFaceImageRGBChunk.numPixels', value, 0, 65535)

  @property
  def chunkIndex(self):
    "uint_8 chunkIndex struct property."
    return self._chunkIndex

  @chunkIndex.setter
  def chunkIndex(self, value):
    self._chunkIndex = msgbuffers.validate_integer(
      'DisplayFaceImageRGBChunk.chunkIndex', value, 0, 255)

  @property
  def numChunks(self):
    "uint_8 numChunks struct property."
    return self._numChunks

  @numChunks.setter
  def numChunks(self, value):
    self._numChunks = msgbuffers.validate_integer(
      'DisplayFaceImageRGBChunk.numChunks', value, 0, 255)

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

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

  @property
  def interruptRunning(self):
    "bool interruptRunning struct property."
    return self._interruptRunning

  @interruptRunning.setter
  def interruptRunning(self, value):
    self._interruptRunning = msgbuffers.validate_bool(
      'DisplayFaceImageRGBChunk.interruptRunning', value)

  def __init__(self, faceData=(0,) * 600, numPixels=0, chunkIndex=0, numChunks=0, duration_ms=0, interruptRunning=False):
    self.faceData = faceData
    self.numPixels = numPixels
    self.chunkIndex = chunkIndex
    self.numChunks = numChunks
    self.duration_ms = duration_ms
    self.interruptRunning = interruptRunning

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new DisplayFaceImageRGBChunk from the given BinaryReader."
    _faceData = reader.read_farray('H', 600)
    _numPixels = reader.read('H')
    _chunkIndex = reader.read('B')
    _numChunks = reader.read('B')
    _duration_ms = reader.read('I')
    _interruptRunning = bool(reader.read('b'))
    return cls(_faceData, _numPixels, _chunkIndex, _numChunks, _duration_ms, _interruptRunning)

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

  def pack_to(self, writer):
    "Writes the current DisplayFaceImageRGBChunk to the given BinaryWriter."
    writer.write_farray(self._faceData, 'H', 600)
    writer.write(self._numPixels, 'H')
    writer.write(self._chunkIndex, 'B')
    writer.write(self._numChunks, 'B')
    writer.write(self._duration_ms, 'I')
    writer.write(int(self._interruptRunning), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._faceData == other._faceData and
        self._numPixels == other._numPixels and
        self._chunkIndex == other._chunkIndex and
        self._numChunks == other._numChunks and
        self._duration_ms == other._duration_ms and
        self._interruptRunning == other._interruptRunning)
    else:
      return NotImplemented

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

  def __len__(self):
    return (msgbuffers.size_farray(self._faceData, 'H', 600) +
      msgbuffers.size(self._numPixels, 'H') +
      msgbuffers.size(self._chunkIndex, 'B') +
      msgbuffers.size(self._numChunks, 'B') +
      msgbuffers.size(self._duration_ms, 'I') +
      msgbuffers.size(self._interruptRunning, 'b'))

  def __str__(self):
    return '{type}(faceData={faceData}, numPixels={numPixels}, chunkIndex={chunkIndex}, numChunks={numChunks}, duration_ms={duration_ms}, interruptRunning={interruptRunning})'.format(
      type=type(self).__name__,
      faceData=msgbuffers.shorten_sequence(self._faceData),
      numPixels=self._numPixels,
      chunkIndex=self._chunkIndex,
      numChunks=self._numChunks,
      duration_ms=self._duration_ms,
      interruptRunning=self._interruptRunning)

  def __repr__(self):
    return '{type}(faceData={faceData}, numPixels={numPixels}, chunkIndex={chunkIndex}, numChunks={numChunks}, duration_ms={duration_ms}, interruptRunning={interruptRunning})'.format(
      type=type(self).__name__,
      faceData=repr(self._faceData),
      numPixels=repr(self._numPixels),
      chunkIndex=repr(self._chunkIndex),
      numChunks=repr(self._numChunks),
      duration_ms=repr(self._duration_ms),
      interruptRunning=repr(self._interruptRunning))

Anki.Vector.Gateway.DisplayFaceImageRGBChunk = DisplayFaceImageRGBChunk
del DisplayFaceImageRGBChunk


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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

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

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

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

  def __len__(self):
    return 0

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

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

Anki.Vector.Gateway.RobotHistoryRequest = RobotHistoryRequest
del RobotHistoryRequest


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

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

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

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

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

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

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

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

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

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

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

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

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

  def __len__(self):
    return (msgbuffers.size_string(self._intent, 'B') +
      msgbuffers.size_string(self._param, 'B'))

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

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

Anki.Vector.Gateway.AppIntent = AppIntent
del AppIntent


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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

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

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

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

  def __len__(self):
    return 0

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

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

Anki.Vector.Gateway.CancelFaceEnrollment = CancelFaceEnrollment
del CancelFaceEnrollment


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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

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

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

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

  def __len__(self):
    return 0

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

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

Anki.Vector.Gateway.RequestEnrolledNames = RequestEnrolledNames
del RequestEnrolledNames


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Anki.Vector.Gateway.UpdateEnrolledFaceByID = UpdateEnrolledFaceByID
del UpdateEnrolledFaceByID


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

  __slots__ = (
    '_faceID', # int_32
  )

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

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

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

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

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

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

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

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

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

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

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

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

Anki.Vector.Gateway.EraseEnrolledFaceByID = EraseEnrolledFaceByID
del EraseEnrolledFaceByID


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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

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

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

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

  def __len__(self):
    return 0

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

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

Anki.Vector.Gateway.EraseAllEnrolledFaces = EraseAllEnrolledFaces
del EraseAllEnrolledFaces


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new SetFaceToEnroll from the given BinaryReader."
    _name = reader.read_string('B')
    _observedID = reader.read('i')
    _saveID = reader.read('i')
    _saveToRobot = bool(reader.read('b'))
    _sayName = bool(reader.read('b'))
    _useMusic = bool(reader.read('b'))
    return cls(_name, _observedID, _saveID, _saveToRobot, _sayName, _useMusic)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._name == other._name and
        self._observedID == other._observedID and
        self._saveID == other._saveID and
        self._saveToRobot == other._saveToRobot and
        self._sayName == other._sayName and
        self._useMusic == other._useMusic)
    else:
      return NotImplemented

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

  def __len__(self):
    return (msgbuffers.size_string(self._name, 'B') +
      msgbuffers.size(self._observedID, 'i') +
      msgbuffers.size(self._saveID, 'i') +
      msgbuffers.size(self._saveToRobot, 'b') +
      msgbuffers.size(self._sayName, 'b') +
      msgbuffers.size(self._useMusic, 'b'))

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

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

Anki.Vector.Gateway.SetFaceToEnroll = SetFaceToEnroll
del SetFaceToEnroll


class VisionMode(object):
  "Automatically-generated uint_32 enumeration."
  Faces = 0x1

Anki.Vector.Gateway.VisionMode = VisionMode
del VisionMode


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

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

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

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

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

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

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

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

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

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

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

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

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

  def __len__(self):
    return (msgbuffers.size(self._mode, 'I') +
      msgbuffers.size(self._enable, 'b'))

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

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

Anki.Vector.Gateway.EnableVisionMode = EnableVisionMode
del EnableVisionMode


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

  __slots__ = (
    '_speed_mmps',                  # float_32
    '_accel_mmps2',                 # float_32
    '_decel_mmps2',                 # float_32
    '_pointTurnSpeed_rad_per_sec',  # float_32
    '_pointTurnAccel_rad_per_sec2', # float_32
    '_pointTurnDecel_rad_per_sec2', # float_32
    '_dockSpeed_mmps',              # float_32
    '_dockAccel_mmps2',             # float_32
    '_dockDecel_mmps2',             # float_32
    '_reverseSpeed_mmps',           # float_32
    '_isCustom',                    # bool
  )

  @property
  def speed_mmps(self):
    "float_32 speed_mmps struct property."
    return self._speed_mmps

  @speed_mmps.setter
  def speed_mmps(self, value):
    self._speed_mmps = msgbuffers.validate_float(
      'PathMotionProfile.speed_mmps', value, 'f')

  @property
  def accel_mmps2(self):
    "float_32 accel_mmps2 struct property."
    return self._accel_mmps2

  @accel_mmps2.setter
  def accel_mmps2(self, value):
    self._accel_mmps2 = msgbuffers.validate_float(
      'PathMotionProfile.accel_mmps2', value, 'f')

  @property
  def decel_mmps2(self):
    "float_32 decel_mmps2 struct property."
    return self._decel_mmps2

  @decel_mmps2.setter
  def decel_mmps2(self, value):
    self._decel_mmps2 = msgbuffers.validate_float(
      'PathMotionProfile.decel_mmps2', value, 'f')

  @property
  def pointTurnSpeed_rad_per_sec(self):
    "float_32 pointTurnSpeed_rad_per_sec struct property."
    return self._pointTurnSpeed_rad_per_sec

  @pointTurnSpeed_rad_per_sec.setter
  def pointTurnSpeed_rad_per_sec(self, value):
    self._pointTurnSpeed_rad_per_sec = msgbuffers.validate_float(
      'PathMotionProfile.pointTurnSpeed_rad_per_sec', value, 'f')

  @property
  def pointTurnAccel_rad_per_sec2(self):
    "float_32 pointTurnAccel_rad_per_sec2 struct property."
    return self._pointTurnAccel_rad_per_sec2

  @pointTurnAccel_rad_per_sec2.setter
  def pointTurnAccel_rad_per_sec2(self, value):
    self._pointTurnAccel_rad_per_sec2 = msgbuffers.validate_float(
      'PathMotionProfile.pointTurnAccel_rad_per_sec2', value, 'f')

  @property
  def pointTurnDecel_rad_per_sec2(self):
    "float_32 pointTurnDecel_rad_per_sec2 struct property."
    return self._pointTurnDecel_rad_per_sec2

  @pointTurnDecel_rad_per_sec2.setter
  def pointTurnDecel_rad_per_sec2(self, value):
    self._pointTurnDecel_rad_per_sec2 = msgbuffers.validate_float(
      'PathMotionProfile.pointTurnDecel_rad_per_sec2', value, 'f')

  @property
  def dockSpeed_mmps(self):
    "float_32 dockSpeed_mmps struct property."
    return self._dockSpeed_mmps

  @dockSpeed_mmps.setter
  def dockSpeed_mmps(self, value):
    self._dockSpeed_mmps = msgbuffers.validate_float(
      'PathMotionProfile.dockSpeed_mmps', value, 'f')

  @property
  def dockAccel_mmps2(self):
    "float_32 dockAccel_mmps2 struct property."
    return self._dockAccel_mmps2

  @dockAccel_mmps2.setter
  def dockAccel_mmps2(self, value):
    self._dockAccel_mmps2 = msgbuffers.validate_float(
      'PathMotionProfile.dockAccel_mmps2', value, 'f')

  @property
  def dockDecel_mmps2(self):
    "float_32 dockDecel_mmps2 struct property."
    return self._dockDecel_mmps2

  @dockDecel_mmps2.setter
  def dockDecel_mmps2(self, value):
    self._dockDecel_mmps2 = msgbuffers.validate_float(
      'PathMotionProfile.dockDecel_mmps2', value, 'f')

  @property
  def reverseSpeed_mmps(self):
    "float_32 reverseSpeed_mmps struct property."
    return self._reverseSpeed_mmps

  @reverseSpeed_mmps.setter
  def reverseSpeed_mmps(self, value):
    self._reverseSpeed_mmps = msgbuffers.validate_float(
      'PathMotionProfile.reverseSpeed_mmps', value, 'f')

  @property
  def isCustom(self):
    "bool isCustom struct property."
    return self._isCustom

  @isCustom.setter
  def isCustom(self, value):
    self._isCustom = msgbuffers.validate_bool(
      'PathMotionProfile.isCustom', value)

  def __init__(self, speed_mmps=100.0, accel_mmps2=200.0, decel_mmps2=500.0, pointTurnSpeed_rad_per_sec=2.0, pointTurnAccel_rad_per_sec2=10.0, pointTurnDecel_rad_per_sec2=10.0, dockSpeed_mmps=60.0, dockAccel_mmps2=200.0, dockDecel_mmps2=500.0, reverseSpeed_mmps=80.0, isCustom=False):
    self.speed_mmps = speed_mmps
    self.accel_mmps2 = accel_mmps2
    self.decel_mmps2 = decel_mmps2
    self.pointTurnSpeed_rad_per_sec = pointTurnSpeed_rad_per_sec
    self.pointTurnAccel_rad_per_sec2 = pointTurnAccel_rad_per_sec2
    self.pointTurnDecel_rad_per_sec2 = pointTurnDecel_rad_per_sec2
    self.dockSpeed_mmps = dockSpeed_mmps
    self.dockAccel_mmps2 = dockAccel_mmps2
    self.dockDecel_mmps2 = dockDecel_mmps2
    self.reverseSpeed_mmps = reverseSpeed_mmps
    self.isCustom = isCustom

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new PathMotionProfile from the given BinaryReader."
    _speed_mmps = reader.read('f')
    _accel_mmps2 = reader.read('f')
    _decel_mmps2 = reader.read('f')
    _pointTurnSpeed_rad_per_sec = reader.read('f')
    _pointTurnAccel_rad_per_sec2 = reader.read('f')
    _pointTurnDecel_rad_per_sec2 = reader.read('f')
    _dockSpeed_mmps = reader.read('f')
    _dockAccel_mmps2 = reader.read('f')
    _dockDecel_mmps2 = reader.read('f')
    _reverseSpeed_mmps = reader.read('f')
    _isCustom = bool(reader.read('b'))
    return cls(_speed_mmps, _accel_mmps2, _decel_mmps2, _pointTurnSpeed_rad_per_sec, _pointTurnAccel_rad_per_sec2, _pointTurnDecel_rad_per_sec2, _dockSpeed_mmps, _dockAccel_mmps2, _dockDecel_mmps2, _reverseSpeed_mmps, _isCustom)

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

  def pack_to(self, writer):
    "Writes the current PathMotionProfile to the given BinaryWriter."
    writer.write(self._speed_mmps, 'f')
    writer.write(self._accel_mmps2, 'f')
    writer.write(self._decel_mmps2, 'f')
    writer.write(self._pointTurnSpeed_rad_per_sec, 'f')
    writer.write(self._pointTurnAccel_rad_per_sec2, 'f')
    writer.write(self._pointTurnDecel_rad_per_sec2, 'f')
    writer.write(self._dockSpeed_mmps, 'f')
    writer.write(self._dockAccel_mmps2, 'f')
    writer.write(self._dockDecel_mmps2, 'f')
    writer.write(self._reverseSpeed_mmps, 'f')
    writer.write(int(self._isCustom), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._speed_mmps == other._speed_mmps and
        self._accel_mmps2 == other._accel_mmps2 and
        self._decel_mmps2 == other._decel_mmps2 and
        self._pointTurnSpeed_rad_per_sec == other._pointTurnSpeed_rad_per_sec and
        self._pointTurnAccel_rad_per_sec2 == other._pointTurnAccel_rad_per_sec2 and
        self._pointTurnDecel_rad_per_sec2 == other._pointTurnDecel_rad_per_sec2 and
        self._dockSpeed_mmps == other._dockSpeed_mmps and
        self._dockAccel_mmps2 == other._dockAccel_mmps2 and
        self._dockDecel_mmps2 == other._dockDecel_mmps2 and
        self._reverseSpeed_mmps == other._reverseSpeed_mmps and
        self._isCustom == other._isCustom)
    else:
      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_mmps, 'f') +
      msgbuffers.size(self._accel_mmps2, 'f') +
      msgbuffers.size(self._decel_mmps2, 'f') +
      msgbuffers.size(self._pointTurnSpeed_rad_per_sec, 'f') +
      msgbuffers.size(self._pointTurnAccel_rad_per_sec2, 'f') +
      msgbuffers.size(self._pointTurnDecel_rad_per_sec2, 'f') +
      msgbuffers.size(self._dockSpeed_mmps, 'f') +
      msgbuffers.size(self._dockAccel_mmps2, 'f') +
      msgbuffers.size(self._dockDecel_mmps2, 'f') +
      msgbuffers.size(self._reverseSpeed_mmps, 'f') +
      msgbuffers.size(self._isCustom, 'b'))

  def __str__(self):
    return '{type}(speed_mmps={speed_mmps}, accel_mmps2={accel_mmps2}, decel_mmps2={decel_mmps2}, pointTurnSpeed_rad_per_sec={pointTurnSpeed_rad_per_sec}, pointTurnAccel_rad_per_sec2={pointTurnAccel_rad_per_sec2}, pointTurnDecel_rad_per_sec2={pointTurnDecel_rad_per_sec2}, dockSpeed_mmps={dockSpeed_mmps}, dockAccel_mmps2={dockAccel_mmps2}, dockDecel_mmps2={dockDecel_mmps2}, reverseSpeed_mmps={reverseSpeed_mmps}, isCustom={isCustom})'.format(
      type=type(self).__name__,
      speed_mmps=self._speed_mmps,
      accel_mmps2=self._accel_mmps2,
      decel_mmps2=self._decel_mmps2,
      pointTurnSpeed_rad_per_sec=self._pointTurnSpeed_rad_per_sec,
      pointTurnAccel_rad_per_sec2=self._pointTurnAccel_rad_per_sec2,
      pointTurnDecel_rad_per_sec2=self._pointTurnDecel_rad_per_sec2,
      dockSpeed_mmps=self._dockSpeed_mmps,
      dockAccel_mmps2=self._dockAccel_mmps2,
      dockDecel_mmps2=self._dockDecel_mmps2,
      reverseSpeed_mmps=self._reverseSpeed_mmps,
      isCustom=self._isCustom)

  def __repr__(self):
    return '{type}(speed_mmps={speed_mmps}, accel_mmps2={accel_mmps2}, decel_mmps2={decel_mmps2}, pointTurnSpeed_rad_per_sec={pointTurnSpeed_rad_per_sec}, pointTurnAccel_rad_per_sec2={pointTurnAccel_rad_per_sec2}, pointTurnDecel_rad_per_sec2={pointTurnDecel_rad_per_sec2}, dockSpeed_mmps={dockSpeed_mmps}, dockAccel_mmps2={dockAccel_mmps2}, dockDecel_mmps2={dockDecel_mmps2}, reverseSpeed_mmps={reverseSpeed_mmps}, isCustom={isCustom})'.format(
      type=type(self).__name__,
      speed_mmps=repr(self._speed_mmps),
      accel_mmps2=repr(self._accel_mmps2),
      decel_mmps2=repr(self._decel_mmps2),
      pointTurnSpeed_rad_per_sec=repr(self._pointTurnSpeed_rad_per_sec),
      pointTurnAccel_rad_per_sec2=repr(self._pointTurnAccel_rad_per_sec2),
      pointTurnDecel_rad_per_sec2=repr(self._pointTurnDecel_rad_per_sec2),
      dockSpeed_mmps=repr(self._dockSpeed_mmps),
      dockAccel_mmps2=repr(self._dockAccel_mmps2),
      dockDecel_mmps2=repr(self._dockDecel_mmps2),
      reverseSpeed_mmps=repr(self._reverseSpeed_mmps),
      isCustom=repr(self._isCustom))

Anki.Vector.Gateway.PathMotionProfile = PathMotionProfile
del PathMotionProfile


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

  __slots__ = (
    '_x_mm',       # float_32
    '_y_mm',       # float_32
    '_rad',        # float_32
    '_motionProf', # Anki.Vector.Gateway.PathMotionProfile
    '_level',      # uint_8
  )

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

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

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

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

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

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

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

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

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

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

  def __init__(self, x_mm=0.0, y_mm=0.0, rad=0.0, motionProf=Anki.Vector.Gateway.PathMotionProfile(), level=0):
    self.x_mm = x_mm
    self.y_mm = y_mm
    self.rad = rad
    self.motionProf = motionProf
    self.level = level

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new GotoPose from the given BinaryReader."
    _x_mm = reader.read('f')
    _y_mm = reader.read('f')
    _rad = reader.read('f')
    _motionProf = reader.read_object(Anki.Vector.Gateway.PathMotionProfile.unpack_from)
    _level = reader.read('B')
    return cls(_x_mm, _y_mm, _rad, _motionProf, _level)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._x_mm == other._x_mm and
        self._y_mm == other._y_mm and
        self._rad == other._rad and
        self._motionProf == other._motionProf and
        self._level == other._level)
    else:
      return NotImplemented

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

  def __len__(self):
    return (msgbuffers.size(self._x_mm, 'f') +
      msgbuffers.size(self._y_mm, 'f') +
      msgbuffers.size(self._rad, 'f') +
      msgbuffers.size_object(self._motionProf) +
      msgbuffers.size(self._level, 'B'))

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

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

Anki.Vector.Gateway.GotoPose = GotoPose
del GotoPose


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

  __slots__ = (
    '_speed_mmps',          # float_32
    '_dist_mm',             # float_32
    '_shouldPlayAnimation', # bool
  )

  @property
  def speed_mmps(self):
    "float_32 speed_mmps struct property."
    return self._speed_mmps

  @speed_mmps.setter
  def speed_mmps(self, value):
    self._speed_mmps = msgbuffers.validate_float(
      'DriveStraight.speed_mmps', value, 'f')

  @property
  def dist_mm(self):
    "float_32 dist_mm struct property."
    return self._dist_mm

  @dist_mm.setter
  def dist_mm(self, value):
    self._dist_mm = msgbuffers.validate_float(
      'DriveStraight.dist_mm', value, 'f')

  @property
  def shouldPlayAnimation(self):
    "bool shouldPlayAnimation struct property."
    return self._shouldPlayAnimation

  @shouldPlayAnimation.setter
  def shouldPlayAnimation(self, value):
    self._shouldPlayAnimation = msgbuffers.validate_bool(
      'DriveStraight.shouldPlayAnimation', value)

  def __init__(self, speed_mmps=0.0, dist_mm=0.0, shouldPlayAnimation=True):
    self.speed_mmps = speed_mmps
    self.dist_mm = dist_mm
    self.shouldPlayAnimation = shouldPlayAnimation

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new DriveStraight from the given BinaryReader."
    _speed_mmps = reader.read('f')
    _dist_mm = reader.read('f')
    _shouldPlayAnimation = bool(reader.read('b'))
    return cls(_speed_mmps, _dist_mm, _shouldPlayAnimation)

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

  def pack_to(self, writer):
    "Writes the current DriveStraight to the given BinaryWriter."
    writer.write(self._speed_mmps, 'f')
    writer.write(self._dist_mm, 'f')
    writer.write(int(self._shouldPlayAnimation), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._speed_mmps == other._speed_mmps and
        self._dist_mm == other._dist_mm and
        self._shouldPlayAnimation == other._shouldPlayAnimation)
    else:
      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_mmps, 'f') +
      msgbuffers.size(self._dist_mm, 'f') +
      msgbuffers.size(self._shouldPlayAnimation, 'b'))

  def __str__(self):
    return '{type}(speed_mmps={speed_mmps}, dist_mm={dist_mm}, shouldPlayAnimation={shouldPlayAnimation})'.format(
      type=type(self).__name__,
      speed_mmps=self._speed_mmps,
      dist_mm=self._dist_mm,
      shouldPlayAnimation=self._shouldPlayAnimation)

  def __repr__(self):
    return '{type}(speed_mmps={speed_mmps}, dist_mm={dist_mm}, shouldPlayAnimation={shouldPlayAnimation})'.format(
      type=type(self).__name__,
      speed_mmps=repr(self._speed_mmps),
      dist_mm=repr(self._dist_mm),
      shouldPlayAnimation=repr(self._shouldPlayAnimation))

Anki.Vector.Gateway.DriveStraight = DriveStraight
del DriveStraight


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

  __slots__ = (
    '_angle_rad',          # float_32
    '_speed_rad_per_sec',  # float_32
    '_accel_rad_per_sec2', # float_32
    '_tol_rad',            # float_32
    '_isAbsolute',         # 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(
      'TurnInPlace.angle_rad', value, 'f')

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

  @property
  def tol_rad(self):
    "float_32 tol_rad struct property."
    return self._tol_rad

  @tol_rad.setter
  def tol_rad(self, value):
    self._tol_rad = msgbuffers.validate_float(
      'TurnInPlace.tol_rad', value, 'f')

  @property
  def isAbsolute(self):
    "uint_8 isAbsolute struct property."
    return self._isAbsolute

  @isAbsolute.setter
  def isAbsolute(self, value):
    self._isAbsolute = msgbuffers.validate_integer(
      'TurnInPlace.isAbsolute', value, 0, 255)

  def __init__(self, angle_rad=0.0, speed_rad_per_sec=0.0, accel_rad_per_sec2=0.0, tol_rad=0.0, isAbsolute=0):
    self.angle_rad = angle_rad
    self.speed_rad_per_sec = speed_rad_per_sec
    self.accel_rad_per_sec2 = accel_rad_per_sec2
    self.tol_rad = tol_rad
    self.isAbsolute = isAbsolute

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new TurnInPlace from the given BinaryReader."
    _angle_rad = reader.read('f')
    _speed_rad_per_sec = reader.read('f')
    _accel_rad_per_sec2 = reader.read('f')
    _tol_rad = reader.read('f')
    _isAbsolute = reader.read('B')
    return cls(_angle_rad, _speed_rad_per_sec, _accel_rad_per_sec2, _tol_rad, _isAbsolute)

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

  def pack_to(self, writer):
    "Writes the current TurnInPlace to the given BinaryWriter."
    writer.write(self._angle_rad, 'f')
    writer.write(self._speed_rad_per_sec, 'f')
    writer.write(self._accel_rad_per_sec2, 'f')
    writer.write(self._tol_rad, 'f')
    writer.write(self._isAbsolute, 'B')

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

  def __str__(self):
    return '{type}(angle_rad={angle_rad}, speed_rad_per_sec={speed_rad_per_sec}, accel_rad_per_sec2={accel_rad_per_sec2}, tol_rad={tol_rad}, isAbsolute={isAbsolute})'.format(
      type=type(self).__name__,
      angle_rad=self._angle_rad,
      speed_rad_per_sec=self._speed_rad_per_sec,
      accel_rad_per_sec2=self._accel_rad_per_sec2,
      tol_rad=self._tol_rad,
      isAbsolute=self._isAbsolute)

  def __repr__(self):
    return '{type}(angle_rad={angle_rad}, speed_rad_per_sec={speed_rad_per_sec}, accel_rad_per_sec2={accel_rad_per_sec2}, tol_rad={tol_rad}, isAbsolute={isAbsolute})'.format(
      type=type(self).__name__,
      angle_rad=repr(self._angle_rad),
      speed_rad_per_sec=repr(self._speed_rad_per_sec),
      accel_rad_per_sec2=repr(self._accel_rad_per_sec2),
      tol_rad=repr(self._tol_rad),
      isAbsolute=repr(self._isAbsolute))

Anki.Vector.Gateway.TurnInPlace = TurnInPlace
del TurnInPlace


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
  )

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

  def __init__(self, angle_rad=0.0, max_speed_rad_per_sec=0.0, accel_rad_per_sec2=0.0, duration_sec=0.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

  @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')
    return cls(_angle_rad, _max_speed_rad_per_sec, _accel_rad_per_sec2, _duration_sec)

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

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

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

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

Anki.Vector.Gateway.SetHeadAngle = SetHeadAngle
del SetHeadAngle


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
  )

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

  def __init__(self, height_mm=0.0, max_speed_rad_per_sec=0.0, accel_rad_per_sec2=0.0, duration_sec=0.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

  @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')
    return cls(_height_mm, _max_speed_rad_per_sec, _accel_rad_per_sec2, _duration_sec)

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

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

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

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

Anki.Vector.Gateway.SetLiftHeight = SetLiftHeight
del SetLiftHeight


class AlignmentType(object):
  "Automatically-generated uint_8 enumeration."
  LIFT_FINGER = 0
  LIFT_PLATE  = 1
  BODY        = 2
  CUSTOM      = 3

Anki.Vector.Gateway.AlignmentType = AlignmentType
del AlignmentType


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

  __slots__ = (
    '_objectID',              # int_32
    '_motionProf',            # Anki.Vector.Gateway.PathMotionProfile
    '_distanceFromMarker_mm', # float_32
    '_approachAngle_rad',     # float_32
    '_useApproachAngle',      # bool
    '_usePreDockPose',        # bool
    '_alignmentType',         # Anki.Vector.Gateway.AlignmentType
  )

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

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

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

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

  @property
  def distanceFromMarker_mm(self):
    "float_32 distanceFromMarker_mm struct property."
    return self._distanceFromMarker_mm

  @distanceFromMarker_mm.setter
  def distanceFromMarker_mm(self, value):
    self._distanceFromMarker_mm = msgbuffers.validate_float(
      'AlignWithObject.distanceFromMarker_mm', value, 'f')

  @property
  def approachAngle_rad(self):
    "float_32 approachAngle_rad struct property."
    return self._approachAngle_rad

  @approachAngle_rad.setter
  def approachAngle_rad(self, value):
    self._approachAngle_rad = msgbuffers.validate_float(
      'AlignWithObject.approachAngle_rad', value, 'f')

  @property
  def useApproachAngle(self):
    "bool useApproachAngle struct property."
    return self._useApproachAngle

  @useApproachAngle.setter
  def useApproachAngle(self, value):
    self._useApproachAngle = msgbuffers.validate_bool(
      'AlignWithObject.useApproachAngle', value)

  @property
  def usePreDockPose(self):
    "bool usePreDockPose struct property."
    return self._usePreDockPose

  @usePreDockPose.setter
  def usePreDockPose(self, value):
    self._usePreDockPose = msgbuffers.validate_bool(
      'AlignWithObject.usePreDockPose', value)

  @property
  def alignmentType(self):
    "Anki.Vector.Gateway.AlignmentType alignmentType struct property."
    return self._alignmentType

  @alignmentType.setter
  def alignmentType(self, value):
    self._alignmentType = msgbuffers.validate_integer(
      'AlignWithObject.alignmentType', value, 0, 255)

  def __init__(self, objectID=0, motionProf=Anki.Vector.Gateway.PathMotionProfile(), distanceFromMarker_mm=0.0, approachAngle_rad=0.0, useApproachAngle=False, usePreDockPose=False, alignmentType=Anki.Vector.Gateway.AlignmentType.LIFT_FINGER):
    self.objectID = objectID
    self.motionProf = motionProf
    self.distanceFromMarker_mm = distanceFromMarker_mm
    self.approachAngle_rad = approachAngle_rad
    self.useApproachAngle = useApproachAngle
    self.usePreDockPose = usePreDockPose
    self.alignmentType = alignmentType

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new AlignWithObject from the given BinaryReader."
    _objectID = reader.read('i')
    _motionProf = reader.read_object(Anki.Vector.Gateway.PathMotionProfile.unpack_from)
    _distanceFromMarker_mm = reader.read('f')
    _approachAngle_rad = reader.read('f')
    _useApproachAngle = bool(reader.read('b'))
    _usePreDockPose = bool(reader.read('b'))
    _alignmentType = reader.read('B')
    return cls(_objectID, _motionProf, _distanceFromMarker_mm, _approachAngle_rad, _useApproachAngle, _usePreDockPose, _alignmentType)

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

  def pack_to(self, writer):
    "Writes the current AlignWithObject to the given BinaryWriter."
    writer.write(self._objectID, 'i')
    writer.write_object(self._motionProf)
    writer.write(self._distanceFromMarker_mm, 'f')
    writer.write(self._approachAngle_rad, 'f')
    writer.write(int(self._useApproachAngle), 'b')
    writer.write(int(self._usePreDockPose), 'b')
    writer.write(self._alignmentType, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._objectID == other._objectID and
        self._motionProf == other._motionProf and
        self._distanceFromMarker_mm == other._distanceFromMarker_mm and
        self._approachAngle_rad == other._approachAngle_rad and
        self._useApproachAngle == other._useApproachAngle and
        self._usePreDockPose == other._usePreDockPose and
        self._alignmentType == other._alignmentType)
    else:
      return NotImplemented

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

  def __len__(self):
    return (msgbuffers.size(self._objectID, 'i') +
      msgbuffers.size_object(self._motionProf) +
      msgbuffers.size(self._distanceFromMarker_mm, 'f') +
      msgbuffers.size(self._approachAngle_rad, 'f') +
      msgbuffers.size(self._useApproachAngle, 'b') +
      msgbuffers.size(self._usePreDockPose, 'b') +
      msgbuffers.size(self._alignmentType, 'B'))

  def __str__(self):
    return '{type}(objectID={objectID}, motionProf={motionProf}, distanceFromMarker_mm={distanceFromMarker_mm}, approachAngle_rad={approachAngle_rad}, useApproachAngle={useApproachAngle}, usePreDockPose={usePreDockPose}, alignmentType={alignmentType})'.format(
      type=type(self).__name__,
      objectID=self._objectID,
      motionProf=self._motionProf,
      distanceFromMarker_mm=self._distanceFromMarker_mm,
      approachAngle_rad=self._approachAngle_rad,
      useApproachAngle=self._useApproachAngle,
      usePreDockPose=self._usePreDockPose,
      alignmentType=self._alignmentType)

  def __repr__(self):
    return '{type}(objectID={objectID}, motionProf={motionProf}, distanceFromMarker_mm={distanceFromMarker_mm}, approachAngle_rad={approachAngle_rad}, useApproachAngle={useApproachAngle}, usePreDockPose={usePreDockPose}, alignmentType={alignmentType})'.format(
      type=type(self).__name__,
      objectID=repr(self._objectID),
      motionProf=repr(self._motionProf),
      distanceFromMarker_mm=repr(self._distanceFromMarker_mm),
      approachAngle_rad=repr(self._approachAngle_rad),
      useApproachAngle=repr(self._useApproachAngle),
      usePreDockPose=repr(self._usePreDockPose),
      alignmentType=repr(self._alignmentType))

Anki.Vector.Gateway.AlignWithObject = AlignWithObject
del AlignWithObject


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
  )

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

  def __init__(self, angle_rad=0.0, max_speed_rad_per_sec=0.0, accel_rad_per_sec2=0.0, duration_sec=0.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

  @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')
    return cls(_angle_rad, _max_speed_rad_per_sec, _accel_rad_per_sec2, _duration_sec)

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

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

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

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

Anki.Vector.Gateway.SetLiftAngle = SetLiftAngle
del SetLiftAngle


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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

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

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

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

  def __len__(self):
    return 0

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

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

Anki.Vector.Gateway.DeleteCustomMarkerObjects = DeleteCustomMarkerObjects
del DeleteCustomMarkerObjects


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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

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

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

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

  def __len__(self):
    return 0

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

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

Anki.Vector.Gateway.DeleteFixedCustomObjects = DeleteFixedCustomObjects
del DeleteFixedCustomObjects


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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

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

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

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

  def __len__(self):
    return 0

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

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

Anki.Vector.Gateway.UndefineAllCustomMarkerObjects = UndefineAllCustomMarkerObjects
del UndefineAllCustomMarkerObjects


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

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

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

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

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

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

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

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

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

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

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

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new CreateFixedCustomObject from the given BinaryReader."
    _pose = reader.read_object(Anki.Vector.Gateway.PoseStruct3d.unpack_from)
    _xSize_mm = reader.read('f')
    _ySize_mm = reader.read('f')
    _zSize_mm = reader.read('f')
    return cls(_pose, _xSize_mm, _ySize_mm, _zSize_mm)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._pose == other._pose and
        self._xSize_mm == other._xSize_mm and
        self._ySize_mm == other._ySize_mm and
        self._zSize_mm == other._zSize_mm)
    else:
      return NotImplemented

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

  def __len__(self):
    return (msgbuffers.size_object(self._pose) +
      msgbuffers.size(self._xSize_mm, 'f') +
      msgbuffers.size(self._ySize_mm, 'f') +
      msgbuffers.size(self._zSize_mm, 'f'))

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

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

Anki.Vector.Gateway.CreateFixedCustomObject = CreateFixedCustomObject
del CreateFixedCustomObject


class CustomObjectMarker(object):
  "Automatically-generated int_16 enumeration."
  Circles2   = 0
  Circles3   = 1
  Circles4   = 2
  Circles5   = 3
  Diamonds2  = 4
  Diamonds3  = 5
  Diamonds4  = 6
  Diamonds5  = 7
  Hexagons2  = 8
  Hexagons3  = 9
  Hexagons4  = 10
  Hexagons5  = 11
  Triangles2 = 12
  Triangles3 = 13
  Triangles4 = 14
  Triangles5 = 15
  Count      = 16

Anki.Vector.Gateway.CustomObjectMarker = CustomObjectMarker
del CustomObjectMarker


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new DefineCustomBox from the given BinaryReader."
    _customType = reader.read('i')
    _markerFront = reader.read('h')
    _markerBack = reader.read('h')
    _markerTop = reader.read('h')
    _markerBottom = reader.read('h')
    _markerLeft = reader.read('h')
    _markerRight = reader.read('h')
    _xSize_mm = reader.read('f')
    _ySize_mm = reader.read('f')
    _zSize_mm = reader.read('f')
    _markerWidth_mm = reader.read('f')
    _markerHeight_mm = reader.read('f')
    _isUnique = bool(reader.read('b'))
    return cls(_customType, _markerFront, _markerBack, _markerTop, _markerBottom, _markerLeft, _markerRight, _xSize_mm, _ySize_mm, _zSize_mm, _markerWidth_mm, _markerHeight_mm, _isUnique)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._customType == other._customType and
        self._markerFront == other._markerFront and
        self._markerBack == other._markerBack and
        self._markerTop == other._markerTop and
        self._markerBottom == other._markerBottom and
        self._markerLeft == other._markerLeft and
        self._markerRight == other._markerRight and
        self._xSize_mm == other._xSize_mm and
        self._ySize_mm == other._ySize_mm and
        self._zSize_mm == other._zSize_mm and
        self._markerWidth_mm == other._markerWidth_mm and
        self._markerHeight_mm == other._markerHeight_mm and
        self._isUnique == other._isUnique)
    else:
      return NotImplemented

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

  def __len__(self):
    return (msgbuffers.size(self._customType, 'i') +
      msgbuffers.size(self._markerFront, 'h') +
      msgbuffers.size(self._markerBack, 'h') +
      msgbuffers.size(self._markerTop, 'h') +
      msgbuffers.size(self._markerBottom, 'h') +
      msgbuffers.size(self._markerLeft, 'h') +
      msgbuffers.size(self._markerRight, 'h') +
      msgbuffers.size(self._xSize_mm, 'f') +
      msgbuffers.size(self._ySize_mm, 'f') +
      msgbuffers.size(self._zSize_mm, 'f') +
      msgbuffers.size(self._markerWidth_mm, 'f') +
      msgbuffers.size(self._markerHeight_mm, 'f') +
      msgbuffers.size(self._isUnique, 'b'))

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

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

Anki.Vector.Gateway.DefineCustomBox = DefineCustomBox
del DefineCustomBox


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new DefineCustomCube from the given BinaryReader."
    _customType = reader.read('i')
    _marker = reader.read('h')
    _size_mm = reader.read('f')
    _markerWidth_mm = reader.read('f')
    _markerHeight_mm = reader.read('f')
    _isUnique = bool(reader.read('b'))
    return cls(_customType, _marker, _size_mm, _markerWidth_mm, _markerHeight_mm, _isUnique)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._customType == other._customType and
        self._marker == other._marker and
        self._size_mm == other._size_mm and
        self._markerWidth_mm == other._markerWidth_mm and
        self._markerHeight_mm == other._markerHeight_mm and
        self._isUnique == other._isUnique)
    else:
      return NotImplemented

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

  def __len__(self):
    return (msgbuffers.size(self._customType, 'i') +
      msgbuffers.size(self._marker, 'h') +
      msgbuffers.size(self._size_mm, 'f') +
      msgbuffers.size(self._markerWidth_mm, 'f') +
      msgbuffers.size(self._markerHeight_mm, 'f') +
      msgbuffers.size(self._isUnique, 'b'))

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

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

Anki.Vector.Gateway.DefineCustomCube = DefineCustomCube
del DefineCustomCube


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new DefineCustomWall from the given BinaryReader."
    _customType = reader.read('i')
    _marker = reader.read('h')
    _width_mm = reader.read('f')
    _height_mm = reader.read('f')
    _markerWidth_mm = reader.read('f')
    _markerHeight_mm = reader.read('f')
    _isUnique = bool(reader.read('b'))
    return cls(_customType, _marker, _width_mm, _height_mm, _markerWidth_mm, _markerHeight_mm, _isUnique)

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

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

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._customType == other._customType and
        self._marker == other._marker and
        self._width_mm == other._width_mm and
        self._height_mm == other._height_mm and
        self._markerWidth_mm == other._markerWidth_mm and
        self._markerHeight_mm == other._markerHeight_mm and
        self._isUnique == other._isUnique)
    else:
      return NotImplemented

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

  def __len__(self):
    return (msgbuffers.size(self._customType, 'i') +
      msgbuffers.size(self._marker, 'h') +
      msgbuffers.size(self._width_mm, 'f') +
      msgbuffers.size(self._height_mm, 'f') +
      msgbuffers.size(self._markerWidth_mm, 'f') +
      msgbuffers.size(self._markerHeight_mm, 'f') +
      msgbuffers.size(self._isUnique, 'b'))

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

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

Anki.Vector.Gateway.DefineCustomWall = DefineCustomWall
del DefineCustomWall


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

  __slots__ = (
    '_frequency', # float_32
  )

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

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

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

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new SetMemoryMapBroadcastFrequency_sec from the given BinaryReader."
    _frequency = reader.read('f')
    return cls(_frequency)

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

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

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

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

  def __len__(self):
    return (msgbuffers.size(self._frequency, 'f'))

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

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

Anki.Vector.Gateway.SetMemoryMapBroadcastFrequency_sec = SetMemoryMapBroadcastFrequency_sec
del SetMemoryMapBroadcastFrequency_sec


class MessageExternalToRobot(object):
  "Generated message-passing union."

  __slots__ = ('_tag', '_data')

  class Tag(object):
    "The type indicator for this union."
    UiDeviceConnectionWrongVersion     = 0x0  # Anki.Vector.Gateway.UiDeviceConnectionWrongVersion
    MoveHead                           = 0x3  # Anki.Vector.Gateway.MoveHead
    MoveLift                           = 0x4  # Anki.Vector.Gateway.MoveLift
    DriveArc                           = 0x5  # Anki.Vector.Gateway.DriveArc
    RobotHistoryRequest                = 0x6  # Anki.Vector.Gateway.RobotHistoryRequest
    DisplayFaceImageRGBChunk           = 0x8  # Anki.Vector.Gateway.DisplayFaceImageRGBChunk
    AppIntent                          = 0x9  # Anki.Vector.Gateway.AppIntent
    CancelFaceEnrollment               = 0xa  # Anki.Vector.Gateway.CancelFaceEnrollment
    RequestEnrolledNames               = 0xb  # Anki.Vector.Gateway.RequestEnrolledNames
    UpdateEnrolledFaceByID             = 0xc  # Anki.Vector.Gateway.UpdateEnrolledFaceByID
    EraseEnrolledFaceByID              = 0xd  # Anki.Vector.Gateway.EraseEnrolledFaceByID
    EraseAllEnrolledFaces              = 0xe  # Anki.Vector.Gateway.EraseAllEnrolledFaces
    SetFaceToEnroll                    = 0xf  # Anki.Vector.Gateway.SetFaceToEnroll
    EnableVisionMode                   = 0x10 # Anki.Vector.Gateway.EnableVisionMode
    GotoPose                           = 0x12 # Anki.Vector.Gateway.GotoPose
    DriveStraight                      = 0x13 # Anki.Vector.Gateway.DriveStraight
    TurnInPlace                        = 0x14 # Anki.Vector.Gateway.TurnInPlace
    SetHeadAngle                       = 0x15 # Anki.Vector.Gateway.SetHeadAngle
    SetLiftHeight                      = 0x16 # Anki.Vector.Gateway.SetLiftHeight
    AlignWithObject                    = 0x18 # Anki.Vector.Gateway.AlignWithObject
    SetLiftAngle                       = 0x19 # Anki.Vector.Gateway.SetLiftAngle
    DeleteCustomMarkerObjects          = 0x1a # Anki.Vector.Gateway.DeleteCustomMarkerObjects
    DeleteFixedCustomObjects           = 0x1b # Anki.Vector.Gateway.DeleteFixedCustomObjects
    UndefineAllCustomMarkerObjects     = 0x1c # Anki.Vector.Gateway.UndefineAllCustomMarkerObjects
    CreateFixedCustomObject            = 0x1d # Anki.Vector.Gateway.CreateFixedCustomObject
    DefineCustomBox                    = 0x1e # Anki.Vector.Gateway.DefineCustomBox
    DefineCustomCube                   = 0x1f # Anki.Vector.Gateway.DefineCustomCube
    DefineCustomWall                   = 0x20 # Anki.Vector.Gateway.DefineCustomWall
    SetMemoryMapBroadcastFrequency_sec = 0x21 # Anki.Vector.Gateway.SetMemoryMapBroadcastFrequency_sec

  @property
  def tag(self):
    "The current tag for this union."
    return self._tag

  @property
  def tag_name(self):
    "The name of the current tag for this union."
    if self._tag in self._tags_by_value:
      return self._tags_by_value[self._tag]
    else:
      return None

  @property
  def data(self):
    "The data held by this union. None if no data is set."
    return self._data

  @property
  def UiDeviceConnectionWrongVersion(self):
    "Anki.Vector.Gateway.UiDeviceConnectionWrongVersion UiDeviceConnectionWrongVersion union property."
    msgbuffers.safety_check_tag('UiDeviceConnectionWrongVersion', self._tag, self.Tag.UiDeviceConnectionWrongVersion, self._tags_by_value)
    return self._data

  @UiDeviceConnectionWrongVersion.setter
  def UiDeviceConnectionWrongVersion(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.UiDeviceConnectionWrongVersion', value, Anki.Vector.Gateway.UiDeviceConnectionWrongVersion)
    self._tag = self.Tag.UiDeviceConnectionWrongVersion

  @property
  def MoveHead(self):
    "Anki.Vector.Gateway.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(
      'MessageExternalToRobot.MoveHead', value, Anki.Vector.Gateway.MoveHead)
    self._tag = self.Tag.MoveHead

  @property
  def MoveLift(self):
    "Anki.Vector.Gateway.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(
      'MessageExternalToRobot.MoveLift', value, Anki.Vector.Gateway.MoveLift)
    self._tag = self.Tag.MoveLift

  @property
  def DriveArc(self):
    "Anki.Vector.Gateway.DriveArc DriveArc union property."
    msgbuffers.safety_check_tag('DriveArc', self._tag, self.Tag.DriveArc, self._tags_by_value)
    return self._data

  @DriveArc.setter
  def DriveArc(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.DriveArc', value, Anki.Vector.Gateway.DriveArc)
    self._tag = self.Tag.DriveArc

  @property
  def RobotHistoryRequest(self):
    "Anki.Vector.Gateway.RobotHistoryRequest RobotHistoryRequest union property."
    msgbuffers.safety_check_tag('RobotHistoryRequest', self._tag, self.Tag.RobotHistoryRequest, self._tags_by_value)
    return self._data

  @RobotHistoryRequest.setter
  def RobotHistoryRequest(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.RobotHistoryRequest', value, Anki.Vector.Gateway.RobotHistoryRequest)
    self._tag = self.Tag.RobotHistoryRequest

  @property
  def DisplayFaceImageRGBChunk(self):
    "Anki.Vector.Gateway.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(
      'MessageExternalToRobot.DisplayFaceImageRGBChunk', value, Anki.Vector.Gateway.DisplayFaceImageRGBChunk)
    self._tag = self.Tag.DisplayFaceImageRGBChunk

  @property
  def AppIntent(self):
    "Anki.Vector.Gateway.AppIntent AppIntent union property."
    msgbuffers.safety_check_tag('AppIntent', self._tag, self.Tag.AppIntent, self._tags_by_value)
    return self._data

  @AppIntent.setter
  def AppIntent(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.AppIntent', value, Anki.Vector.Gateway.AppIntent)
    self._tag = self.Tag.AppIntent

  @property
  def CancelFaceEnrollment(self):
    "Anki.Vector.Gateway.CancelFaceEnrollment CancelFaceEnrollment union property."
    msgbuffers.safety_check_tag('CancelFaceEnrollment', self._tag, self.Tag.CancelFaceEnrollment, self._tags_by_value)
    return self._data

  @CancelFaceEnrollment.setter
  def CancelFaceEnrollment(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.CancelFaceEnrollment', value, Anki.Vector.Gateway.CancelFaceEnrollment)
    self._tag = self.Tag.CancelFaceEnrollment

  @property
  def RequestEnrolledNames(self):
    "Anki.Vector.Gateway.RequestEnrolledNames RequestEnrolledNames union property."
    msgbuffers.safety_check_tag('RequestEnrolledNames', self._tag, self.Tag.RequestEnrolledNames, self._tags_by_value)
    return self._data

  @RequestEnrolledNames.setter
  def RequestEnrolledNames(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.RequestEnrolledNames', value, Anki.Vector.Gateway.RequestEnrolledNames)
    self._tag = self.Tag.RequestEnrolledNames

  @property
  def UpdateEnrolledFaceByID(self):
    "Anki.Vector.Gateway.UpdateEnrolledFaceByID UpdateEnrolledFaceByID union property."
    msgbuffers.safety_check_tag('UpdateEnrolledFaceByID', self._tag, self.Tag.UpdateEnrolledFaceByID, self._tags_by_value)
    return self._data

  @UpdateEnrolledFaceByID.setter
  def UpdateEnrolledFaceByID(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.UpdateEnrolledFaceByID', value, Anki.Vector.Gateway.UpdateEnrolledFaceByID)
    self._tag = self.Tag.UpdateEnrolledFaceByID

  @property
  def EraseEnrolledFaceByID(self):
    "Anki.Vector.Gateway.EraseEnrolledFaceByID EraseEnrolledFaceByID union property."
    msgbuffers.safety_check_tag('EraseEnrolledFaceByID', self._tag, self.Tag.EraseEnrolledFaceByID, self._tags_by_value)
    return self._data

  @EraseEnrolledFaceByID.setter
  def EraseEnrolledFaceByID(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.EraseEnrolledFaceByID', value, Anki.Vector.Gateway.EraseEnrolledFaceByID)
    self._tag = self.Tag.EraseEnrolledFaceByID

  @property
  def EraseAllEnrolledFaces(self):
    "Anki.Vector.Gateway.EraseAllEnrolledFaces EraseAllEnrolledFaces union property."
    msgbuffers.safety_check_tag('EraseAllEnrolledFaces', self._tag, self.Tag.EraseAllEnrolledFaces, self._tags_by_value)
    return self._data

  @EraseAllEnrolledFaces.setter
  def EraseAllEnrolledFaces(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.EraseAllEnrolledFaces', value, Anki.Vector.Gateway.EraseAllEnrolledFaces)
    self._tag = self.Tag.EraseAllEnrolledFaces

  @property
  def SetFaceToEnroll(self):
    "Anki.Vector.Gateway.SetFaceToEnroll SetFaceToEnroll union property."
    msgbuffers.safety_check_tag('SetFaceToEnroll', self._tag, self.Tag.SetFaceToEnroll, self._tags_by_value)
    return self._data

  @SetFaceToEnroll.setter
  def SetFaceToEnroll(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.SetFaceToEnroll', value, Anki.Vector.Gateway.SetFaceToEnroll)
    self._tag = self.Tag.SetFaceToEnroll

  @property
  def EnableVisionMode(self):
    "Anki.Vector.Gateway.EnableVisionMode EnableVisionMode union property."
    msgbuffers.safety_check_tag('EnableVisionMode', self._tag, self.Tag.EnableVisionMode, self._tags_by_value)
    return self._data

  @EnableVisionMode.setter
  def EnableVisionMode(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.EnableVisionMode', value, Anki.Vector.Gateway.EnableVisionMode)
    self._tag = self.Tag.EnableVisionMode

  @property
  def GotoPose(self):
    "Anki.Vector.Gateway.GotoPose GotoPose union property."
    msgbuffers.safety_check_tag('GotoPose', self._tag, self.Tag.GotoPose, self._tags_by_value)
    return self._data

  @GotoPose.setter
  def GotoPose(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.GotoPose', value, Anki.Vector.Gateway.GotoPose)
    self._tag = self.Tag.GotoPose

  @property
  def DriveStraight(self):
    "Anki.Vector.Gateway.DriveStraight DriveStraight union property."
    msgbuffers.safety_check_tag('DriveStraight', self._tag, self.Tag.DriveStraight, self._tags_by_value)
    return self._data

  @DriveStraight.setter
  def DriveStraight(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.DriveStraight', value, Anki.Vector.Gateway.DriveStraight)
    self._tag = self.Tag.DriveStraight

  @property
  def TurnInPlace(self):
    "Anki.Vector.Gateway.TurnInPlace TurnInPlace union property."
    msgbuffers.safety_check_tag('TurnInPlace', self._tag, self.Tag.TurnInPlace, self._tags_by_value)
    return self._data

  @TurnInPlace.setter
  def TurnInPlace(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.TurnInPlace', value, Anki.Vector.Gateway.TurnInPlace)
    self._tag = self.Tag.TurnInPlace

  @property
  def SetHeadAngle(self):
    "Anki.Vector.Gateway.SetHeadAngle SetHeadAngle union property."
    msgbuffers.safety_check_tag('SetHeadAngle', self._tag, self.Tag.SetHeadAngle, self._tags_by_value)
    return self._data

  @SetHeadAngle.setter
  def SetHeadAngle(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.SetHeadAngle', value, Anki.Vector.Gateway.SetHeadAngle)
    self._tag = self.Tag.SetHeadAngle

  @property
  def SetLiftHeight(self):
    "Anki.Vector.Gateway.SetLiftHeight SetLiftHeight union property."
    msgbuffers.safety_check_tag('SetLiftHeight', self._tag, self.Tag.SetLiftHeight, self._tags_by_value)
    return self._data

  @SetLiftHeight.setter
  def SetLiftHeight(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.SetLiftHeight', value, Anki.Vector.Gateway.SetLiftHeight)
    self._tag = self.Tag.SetLiftHeight

  @property
  def AlignWithObject(self):
    "Anki.Vector.Gateway.AlignWithObject AlignWithObject union property."
    msgbuffers.safety_check_tag('AlignWithObject', self._tag, self.Tag.AlignWithObject, self._tags_by_value)
    return self._data

  @AlignWithObject.setter
  def AlignWithObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.AlignWithObject', value, Anki.Vector.Gateway.AlignWithObject)
    self._tag = self.Tag.AlignWithObject

  @property
  def SetLiftAngle(self):
    "Anki.Vector.Gateway.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(
      'MessageExternalToRobot.SetLiftAngle', value, Anki.Vector.Gateway.SetLiftAngle)
    self._tag = self.Tag.SetLiftAngle

  @property
  def DeleteCustomMarkerObjects(self):
    "Anki.Vector.Gateway.DeleteCustomMarkerObjects DeleteCustomMarkerObjects union property."
    msgbuffers.safety_check_tag('DeleteCustomMarkerObjects', self._tag, self.Tag.DeleteCustomMarkerObjects, self._tags_by_value)
    return self._data

  @DeleteCustomMarkerObjects.setter
  def DeleteCustomMarkerObjects(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.DeleteCustomMarkerObjects', value, Anki.Vector.Gateway.DeleteCustomMarkerObjects)
    self._tag = self.Tag.DeleteCustomMarkerObjects

  @property
  def DeleteFixedCustomObjects(self):
    "Anki.Vector.Gateway.DeleteFixedCustomObjects DeleteFixedCustomObjects union property."
    msgbuffers.safety_check_tag('DeleteFixedCustomObjects', self._tag, self.Tag.DeleteFixedCustomObjects, self._tags_by_value)
    return self._data

  @DeleteFixedCustomObjects.setter
  def DeleteFixedCustomObjects(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.DeleteFixedCustomObjects', value, Anki.Vector.Gateway.DeleteFixedCustomObjects)
    self._tag = self.Tag.DeleteFixedCustomObjects

  @property
  def UndefineAllCustomMarkerObjects(self):
    "Anki.Vector.Gateway.UndefineAllCustomMarkerObjects UndefineAllCustomMarkerObjects union property."
    msgbuffers.safety_check_tag('UndefineAllCustomMarkerObjects', self._tag, self.Tag.UndefineAllCustomMarkerObjects, self._tags_by_value)
    return self._data

  @UndefineAllCustomMarkerObjects.setter
  def UndefineAllCustomMarkerObjects(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.UndefineAllCustomMarkerObjects', value, Anki.Vector.Gateway.UndefineAllCustomMarkerObjects)
    self._tag = self.Tag.UndefineAllCustomMarkerObjects

  @property
  def CreateFixedCustomObject(self):
    "Anki.Vector.Gateway.CreateFixedCustomObject CreateFixedCustomObject union property."
    msgbuffers.safety_check_tag('CreateFixedCustomObject', self._tag, self.Tag.CreateFixedCustomObject, self._tags_by_value)
    return self._data

  @CreateFixedCustomObject.setter
  def CreateFixedCustomObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.CreateFixedCustomObject', value, Anki.Vector.Gateway.CreateFixedCustomObject)
    self._tag = self.Tag.CreateFixedCustomObject

  @property
  def DefineCustomBox(self):
    "Anki.Vector.Gateway.DefineCustomBox DefineCustomBox union property."
    msgbuffers.safety_check_tag('DefineCustomBox', self._tag, self.Tag.DefineCustomBox, self._tags_by_value)
    return self._data

  @DefineCustomBox.setter
  def DefineCustomBox(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.DefineCustomBox', value, Anki.Vector.Gateway.DefineCustomBox)
    self._tag = self.Tag.DefineCustomBox

  @property
  def DefineCustomCube(self):
    "Anki.Vector.Gateway.DefineCustomCube DefineCustomCube union property."
    msgbuffers.safety_check_tag('DefineCustomCube', self._tag, self.Tag.DefineCustomCube, self._tags_by_value)
    return self._data

  @DefineCustomCube.setter
  def DefineCustomCube(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.DefineCustomCube', value, Anki.Vector.Gateway.DefineCustomCube)
    self._tag = self.Tag.DefineCustomCube

  @property
  def DefineCustomWall(self):
    "Anki.Vector.Gateway.DefineCustomWall DefineCustomWall union property."
    msgbuffers.safety_check_tag('DefineCustomWall', self._tag, self.Tag.DefineCustomWall, self._tags_by_value)
    return self._data

  @DefineCustomWall.setter
  def DefineCustomWall(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.DefineCustomWall', value, Anki.Vector.Gateway.DefineCustomWall)
    self._tag = self.Tag.DefineCustomWall

  @property
  def SetMemoryMapBroadcastFrequency_sec(self):
    "Anki.Vector.Gateway.SetMemoryMapBroadcastFrequency_sec SetMemoryMapBroadcastFrequency_sec union property."
    msgbuffers.safety_check_tag('SetMemoryMapBroadcastFrequency_sec', self._tag, self.Tag.SetMemoryMapBroadcastFrequency_sec, self._tags_by_value)
    return self._data

  @SetMemoryMapBroadcastFrequency_sec.setter
  def SetMemoryMapBroadcastFrequency_sec(self, value):
    self._data = msgbuffers.validate_object(
      'MessageExternalToRobot.SetMemoryMapBroadcastFrequency_sec', value, Anki.Vector.Gateway.SetMemoryMapBroadcastFrequency_sec)
    self._tag = self.Tag.SetMemoryMapBroadcastFrequency_sec

  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 MessageExternalToRobot from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('MessageExternalToRobot.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new MessageExternalToRobot 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('MessageExternalToRobot attempted to unpack unknown tag {tag}.'.format(tag=tag))

  def pack(self):
    "Writes the current MessageExternalToRobot, 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 MessageExternalToRobot.')

  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 < 29:
      return self._tag_size_methods[self._tag](self._data)
    else:
      return 1

  def __str__(self):
    if 0 <= self._tag < 29:
      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 < 29:
      return '{type}({name}={value})'.format(
        type=type(self).__name__,
        name=self.tag_name,
        value=repr(self._data))
    else:
      return '{type}()'.format(
        type=type(self).__name__)

  _tags_by_name = dict(
    UiDeviceConnectionWrongVersion=0,
    MoveHead=3,
    MoveLift=4,
    DriveArc=5,
    RobotHistoryRequest=6,
    DisplayFaceImageRGBChunk=8,
    AppIntent=9,
    CancelFaceEnrollment=10,
    RequestEnrolledNames=11,
    UpdateEnrolledFaceByID=12,
    EraseEnrolledFaceByID=13,
    EraseAllEnrolledFaces=14,
    SetFaceToEnroll=15,
    EnableVisionMode=16,
    GotoPose=18,
    DriveStraight=19,
    TurnInPlace=20,
    SetHeadAngle=21,
    SetLiftHeight=22,
    AlignWithObject=24,
    SetLiftAngle=25,
    DeleteCustomMarkerObjects=26,
    DeleteFixedCustomObjects=27,
    UndefineAllCustomMarkerObjects=28,
    CreateFixedCustomObject=29,
    DefineCustomBox=30,
    DefineCustomCube=31,
    DefineCustomWall=32,
    SetMemoryMapBroadcastFrequency_sec=33,
  )

  _tags_by_value = dict()
  _tags_by_value[0] = 'UiDeviceConnectionWrongVersion'
  _tags_by_value[3] = 'MoveHead'
  _tags_by_value[4] = 'MoveLift'
  _tags_by_value[5] = 'DriveArc'
  _tags_by_value[6] = 'RobotHistoryRequest'
  _tags_by_value[8] = 'DisplayFaceImageRGBChunk'
  _tags_by_value[9] = 'AppIntent'
  _tags_by_value[10] = 'CancelFaceEnrollment'
  _tags_by_value[11] = 'RequestEnrolledNames'
  _tags_by_value[12] = 'UpdateEnrolledFaceByID'
  _tags_by_value[13] = 'EraseEnrolledFaceByID'
  _tags_by_value[14] = 'EraseAllEnrolledFaces'
  _tags_by_value[15] = 'SetFaceToEnroll'
  _tags_by_value[16] = 'EnableVisionMode'
  _tags_by_value[18] = 'GotoPose'
  _tags_by_value[19] = 'DriveStraight'
  _tags_by_value[20] = 'TurnInPlace'
  _tags_by_value[21] = 'SetHeadAngle'
  _tags_by_value[22] = 'SetLiftHeight'
  _tags_by_value[24] = 'AlignWithObject'
  _tags_by_value[25] = 'SetLiftAngle'
  _tags_by_value[26] = 'DeleteCustomMarkerObjects'
  _tags_by_value[27] = 'DeleteFixedCustomObjects'
  _tags_by_value[28] = 'UndefineAllCustomMarkerObjects'
  _tags_by_value[29] = 'CreateFixedCustomObject'
  _tags_by_value[30] = 'DefineCustomBox'
  _tags_by_value[31] = 'DefineCustomCube'
  _tags_by_value[32] = 'DefineCustomWall'
  _tags_by_value[33] = 'SetMemoryMapBroadcastFrequency_sec'
  

  _tag_unpack_methods = dict()
  _tag_unpack_methods[0] = lambda reader: reader.read_object(Anki.Vector.Gateway.UiDeviceConnectionWrongVersion.unpack_from)
  _tag_unpack_methods[3] = lambda reader: reader.read_object(Anki.Vector.Gateway.MoveHead.unpack_from)
  _tag_unpack_methods[4] = lambda reader: reader.read_object(Anki.Vector.Gateway.MoveLift.unpack_from)
  _tag_unpack_methods[5] = lambda reader: reader.read_object(Anki.Vector.Gateway.DriveArc.unpack_from)
  _tag_unpack_methods[6] = lambda reader: reader.read_object(Anki.Vector.Gateway.RobotHistoryRequest.unpack_from)
  _tag_unpack_methods[8] = lambda reader: reader.read_object(Anki.Vector.Gateway.DisplayFaceImageRGBChunk.unpack_from)
  _tag_unpack_methods[9] = lambda reader: reader.read_object(Anki.Vector.Gateway.AppIntent.unpack_from)
  _tag_unpack_methods[10] = lambda reader: reader.read_object(Anki.Vector.Gateway.CancelFaceEnrollment.unpack_from)
  _tag_unpack_methods[11] = lambda reader: reader.read_object(Anki.Vector.Gateway.RequestEnrolledNames.unpack_from)
  _tag_unpack_methods[12] = lambda reader: reader.read_object(Anki.Vector.Gateway.UpdateEnrolledFaceByID.unpack_from)
  _tag_unpack_methods[13] = lambda reader: reader.read_object(Anki.Vector.Gateway.EraseEnrolledFaceByID.unpack_from)
  _tag_unpack_methods[14] = lambda reader: reader.read_object(Anki.Vector.Gateway.EraseAllEnrolledFaces.unpack_from)
  _tag_unpack_methods[15] = lambda reader: reader.read_object(Anki.Vector.Gateway.SetFaceToEnroll.unpack_from)
  _tag_unpack_methods[16] = lambda reader: reader.read_object(Anki.Vector.Gateway.EnableVisionMode.unpack_from)
  _tag_unpack_methods[18] = lambda reader: reader.read_object(Anki.Vector.Gateway.GotoPose.unpack_from)
  _tag_unpack_methods[19] = lambda reader: reader.read_object(Anki.Vector.Gateway.DriveStraight.unpack_from)
  _tag_unpack_methods[20] = lambda reader: reader.read_object(Anki.Vector.Gateway.TurnInPlace.unpack_from)
  _tag_unpack_methods[21] = lambda reader: reader.read_object(Anki.Vector.Gateway.SetHeadAngle.unpack_from)
  _tag_unpack_methods[22] = lambda reader: reader.read_object(Anki.Vector.Gateway.SetLiftHeight.unpack_from)
  _tag_unpack_methods[24] = lambda reader: reader.read_object(Anki.Vector.Gateway.AlignWithObject.unpack_from)
  _tag_unpack_methods[25] = lambda reader: reader.read_object(Anki.Vector.Gateway.SetLiftAngle.unpack_from)
  _tag_unpack_methods[26] = lambda reader: reader.read_object(Anki.Vector.Gateway.DeleteCustomMarkerObjects.unpack_from)
  _tag_unpack_methods[27] = lambda reader: reader.read_object(Anki.Vector.Gateway.DeleteFixedCustomObjects.unpack_from)
  _tag_unpack_methods[28] = lambda reader: reader.read_object(Anki.Vector.Gateway.UndefineAllCustomMarkerObjects.unpack_from)
  _tag_unpack_methods[29] = lambda reader: reader.read_object(Anki.Vector.Gateway.CreateFixedCustomObject.unpack_from)
  _tag_unpack_methods[30] = lambda reader: reader.read_object(Anki.Vector.Gateway.DefineCustomBox.unpack_from)
  _tag_unpack_methods[31] = lambda reader: reader.read_object(Anki.Vector.Gateway.DefineCustomCube.unpack_from)
  _tag_unpack_methods[32] = lambda reader: reader.read_object(Anki.Vector.Gateway.DefineCustomWall.unpack_from)
  _tag_unpack_methods[33] = lambda reader: reader.read_object(Anki.Vector.Gateway.SetMemoryMapBroadcastFrequency_sec.unpack_from)
  

  _tag_pack_methods = dict()
  _tag_pack_methods[0] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[3] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[4] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[5] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[6] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[8] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[9] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[10] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[11] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[12] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[13] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[14] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[15] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[16] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[18] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[19] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[20] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[21] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[22] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[24] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[25] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[26] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[27] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[28] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[29] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[30] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[31] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[32] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[33] = lambda writer, value: writer.write_object(value)
  

  _tag_size_methods = dict()
  _tag_size_methods[0] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[3] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[4] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[5] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[6] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[8] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[9] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[10] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[11] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[12] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[13] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[14] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[15] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[16] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[18] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[19] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[20] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[21] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[22] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[24] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[25] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[26] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[27] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[28] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[29] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[30] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[31] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[32] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[33] = lambda value: msgbuffers.size_object(value)
  

  _type_by_tag_value = dict()
  _type_by_tag_value[0] = lambda : Anki.Vector.Gateway.UiDeviceConnectionWrongVersion
  _type_by_tag_value[3] = lambda : Anki.Vector.Gateway.MoveHead
  _type_by_tag_value[4] = lambda : Anki.Vector.Gateway.MoveLift
  _type_by_tag_value[5] = lambda : Anki.Vector.Gateway.DriveArc
  _type_by_tag_value[6] = lambda : Anki.Vector.Gateway.RobotHistoryRequest
  _type_by_tag_value[8] = lambda : Anki.Vector.Gateway.DisplayFaceImageRGBChunk
  _type_by_tag_value[9] = lambda : Anki.Vector.Gateway.AppIntent
  _type_by_tag_value[10] = lambda : Anki.Vector.Gateway.CancelFaceEnrollment
  _type_by_tag_value[11] = lambda : Anki.Vector.Gateway.RequestEnrolledNames
  _type_by_tag_value[12] = lambda : Anki.Vector.Gateway.UpdateEnrolledFaceByID
  _type_by_tag_value[13] = lambda : Anki.Vector.Gateway.EraseEnrolledFaceByID
  _type_by_tag_value[14] = lambda : Anki.Vector.Gateway.EraseAllEnrolledFaces
  _type_by_tag_value[15] = lambda : Anki.Vector.Gateway.SetFaceToEnroll
  _type_by_tag_value[16] = lambda : Anki.Vector.Gateway.EnableVisionMode
  _type_by_tag_value[18] = lambda : Anki.Vector.Gateway.GotoPose
  _type_by_tag_value[19] = lambda : Anki.Vector.Gateway.DriveStraight
  _type_by_tag_value[20] = lambda : Anki.Vector.Gateway.TurnInPlace
  _type_by_tag_value[21] = lambda : Anki.Vector.Gateway.SetHeadAngle
  _type_by_tag_value[22] = lambda : Anki.Vector.Gateway.SetLiftHeight
  _type_by_tag_value[24] = lambda : Anki.Vector.Gateway.AlignWithObject
  _type_by_tag_value[25] = lambda : Anki.Vector.Gateway.SetLiftAngle
  _type_by_tag_value[26] = lambda : Anki.Vector.Gateway.DeleteCustomMarkerObjects
  _type_by_tag_value[27] = lambda : Anki.Vector.Gateway.DeleteFixedCustomObjects
  _type_by_tag_value[28] = lambda : Anki.Vector.Gateway.UndefineAllCustomMarkerObjects
  _type_by_tag_value[29] = lambda : Anki.Vector.Gateway.CreateFixedCustomObject
  _type_by_tag_value[30] = lambda : Anki.Vector.Gateway.DefineCustomBox
  _type_by_tag_value[31] = lambda : Anki.Vector.Gateway.DefineCustomCube
  _type_by_tag_value[32] = lambda : Anki.Vector.Gateway.DefineCustomWall
  _type_by_tag_value[33] = lambda : Anki.Vector.Gateway.SetMemoryMapBroadcastFrequency_sec
  

Anki.Vector.Gateway.MessageExternalToRobot = MessageExternalToRobot
del MessageExternalToRobot


