"""
Autogenerated python message buffer code.
Source: clad/gateway/messageRobotToExternal.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/messageRobotToExternal.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 UiDeviceConnected(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(
      'UiDeviceConnected.placeholder', value, 255)

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

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

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

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

  def pack_to(self, writer):
    "Writes the current UiDeviceConnected to the given BinaryWriter."
    writer.write_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.UiDeviceConnected = UiDeviceConnected
del UiDeviceConnected


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

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

  @property
  def animationName(self):
    "string[uint_8] animationName struct property."
    return self._animationName

  @animationName.setter
  def animationName(self, value):
    self._animationName = msgbuffers.validate_string(
      'AnimationCompleted.animationName', value, 255)

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

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

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

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

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

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

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

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

Anki.Vector.Gateway.AnimationCompleted = AnimationCompleted
del AnimationCompleted


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

  __slots__ = ('_tag', '_data')

  class Tag(object):
    "The type indicator for this union."
    animationCompleted = 0x1 # Anki.Vector.Gateway.AnimationCompleted

  @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 animationCompleted(self):
    "Anki.Vector.Gateway.AnimationCompleted animationCompleted union property."
    msgbuffers.safety_check_tag('animationCompleted', self._tag, self.Tag.animationCompleted, self._tags_by_value)
    return self._data

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

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

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

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

  def clear(self):
    self._tag = None
    self._data = None

  @classmethod
  def typeByTag(cls, tag):
    return cls._type_by_tag_value[tag]()

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

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

  def __len__(self):
    if 0 <= self._tag < 1:
      return self._tag_size_methods[self._tag](self._data)
    else:
      return 1

  def __str__(self):
    if 0 <= self._tag < 1:
      return '{type}({name}={value})'.format(
        type=type(self).__name__,
        name=self.tag_name,
        value=self._data)
    else:
      return '{type}()'.format(
        type=type(self).__name__)

  def __repr__(self):
    if 0 <= self._tag < 1:
      return '{type}({name}={value})'.format(
        type=type(self).__name__,
        name=self.tag_name,
        value=repr(self._data))
    else:
      return '{type}()'.format(
        type=type(self).__name__)

  _tags_by_name = dict(
    animationCompleted=1,
  )

  _tags_by_value = dict()
  _tags_by_value[1] = 'animationCompleted'
  

  _tag_unpack_methods = dict()
  _tag_unpack_methods[1] = lambda reader: reader.read_object(Anki.Vector.Gateway.AnimationCompleted.unpack_from)
  

  _tag_pack_methods = dict()
  _tag_pack_methods[1] = lambda writer, value: writer.write_object(value)
  

  _tag_size_methods = dict()
  _tag_size_methods[1] = lambda value: msgbuffers.size_object(value)
  

  _type_by_tag_value = dict()
  _type_by_tag_value[1] = lambda : Anki.Vector.Gateway.AnimationCompleted
  

Anki.Vector.Gateway.ActionCompletedUnion = ActionCompletedUnion
del ActionCompletedUnion


class RobotActionType(object):
  "Automatically-generated int_32 enumeration."
  UNKNOWN = -1

Anki.Vector.Gateway.RobotActionType = RobotActionType
del RobotActionType


class ActionResult(object):
  "Automatically-generated uint_32 enumeration."
  SUCCESS                 = 0
  RUNNING                 = 16777216
  CANCELLED_WHILE_RUNNING = 33554432

Anki.Vector.Gateway.ActionResult = ActionResult
del ActionResult


class ObjectFamily(object):
  "Automatically-generated int_32 enumeration."
  Invalid      = -1
  Unknown      = 0
  Block        = 1
  LightCube    = 2
  Charger      = 3
  CustomObject = 6

Anki.Vector.Gateway.ObjectFamily = ObjectFamily
del ObjectFamily


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

  __slots__ = (
    '_x', # float_32
    '_y', # float_32
    '_z', # float_32
  )

  @property
  def x(self):
    "float_32 x struct property."
    return self._x

  @x.setter
  def x(self, value):
    self._x = msgbuffers.validate_float(
      'ActiveAccel.x', value, 'f')

  @property
  def y(self):
    "float_32 y struct property."
    return self._y

  @y.setter
  def y(self, value):
    self._y = msgbuffers.validate_float(
      'ActiveAccel.y', value, 'f')

  @property
  def z(self):
    "float_32 z struct property."
    return self._z

  @z.setter
  def z(self, value):
    self._z = msgbuffers.validate_float(
      'ActiveAccel.z', value, 'f')

  def __init__(self, x=0.0, y=0.0, z=0.0):
    self.x = x
    self.y = y
    self.z = z

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

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

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

  def pack_to(self, writer):
    "Writes the current ActiveAccel to the given BinaryWriter."
    writer.write(self._x, 'f')
    writer.write(self._y, 'f')
    writer.write(self._z, 'f')

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

  def __str__(self):
    return '{type}(x={x}, y={y}, z={z})'.format(
      type=type(self).__name__,
      x=self._x,
      y=self._y,
      z=self._z)

  def __repr__(self):
    return '{type}(x={x}, y={y}, z={z})'.format(
      type=type(self).__name__,
      x=repr(self._x),
      y=repr(self._y),
      z=repr(self._z))

Anki.Vector.Gateway.ActiveAccel = ActiveAccel
del ActiveAccel


class UpAxis(object):
  "Automatically-generated uint_8 enumeration."
  XNegative   = 0
  XPositive   = 1
  YNegative   = 2
  YPositive   = 3
  ZNegative   = 4
  ZPositive   = 5
  NumAxes     = 6
  UnknownAxis = 7

Anki.Vector.Gateway.UpAxis = UpAxis
del UpAxis


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

  __slots__ = (
    '_objectID',    # uint_32
    '_factoryID',   # string[uint_8]
    '_object_type', # Anki.Vector.Gateway.ObjectType
    '_connected',   # bool
  )

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

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

  @property
  def factoryID(self):
    "string[uint_8] factoryID struct property."
    return self._factoryID

  @factoryID.setter
  def factoryID(self, value):
    self._factoryID = msgbuffers.validate_string(
      'ObjectConnectionState.factoryID', value, 255)

  @property
  def object_type(self):
    "Anki.Vector.Gateway.ObjectType object_type struct property."
    return self._object_type

  @object_type.setter
  def object_type(self, value):
    self._object_type = msgbuffers.validate_integer(
      'ObjectConnectionState.object_type', value, -2147483648, 2147483647)

  @property
  def connected(self):
    "bool connected struct property."
    return self._connected

  @connected.setter
  def connected(self, value):
    self._connected = msgbuffers.validate_bool(
      'ObjectConnectionState.connected', value)

  def __init__(self, objectID=0, factoryID='', object_type=Anki.Vector.Gateway.ObjectType.UnknownObject, connected=False):
    self.objectID = objectID
    self.factoryID = factoryID
    self.object_type = object_type
    self.connected = connected

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new ObjectConnectionState from the given BinaryReader."
    _objectID = reader.read('I')
    _factoryID = reader.read_string('B')
    _object_type = reader.read('i')
    _connected = bool(reader.read('b'))
    return cls(_objectID, _factoryID, _object_type, _connected)

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

  def pack_to(self, writer):
    "Writes the current ObjectConnectionState to the given BinaryWriter."
    writer.write(self._objectID, 'I')
    writer.write_string(self._factoryID, 'B')
    writer.write(self._object_type, 'i')
    writer.write(int(self._connected), 'b')

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

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

  def __len__(self):
    return (msgbuffers.size(self._objectID, 'I') +
      msgbuffers.size_string(self._factoryID, 'B') +
      msgbuffers.size(self._object_type, 'i') +
      msgbuffers.size(self._connected, 'b'))

  def __str__(self):
    return '{type}(objectID={objectID}, factoryID={factoryID}, object_type={object_type}, connected={connected})'.format(
      type=type(self).__name__,
      objectID=self._objectID,
      factoryID=msgbuffers.shorten_string(self._factoryID),
      object_type=self._object_type,
      connected=self._connected)

  def __repr__(self):
    return '{type}(objectID={objectID}, factoryID={factoryID}, object_type={object_type}, connected={connected})'.format(
      type=type(self).__name__,
      objectID=repr(self._objectID),
      factoryID=repr(self._factoryID),
      object_type=repr(self._object_type),
      connected=repr(self._connected))

Anki.Vector.Gateway.ObjectConnectionState = ObjectConnectionState
del ObjectConnectionState


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

  __slots__ = (
    '_timestamp', # uint_32
    '_objectID',  # uint_32
  )

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Anki.Vector.Gateway.ObjectMoved = ObjectMoved
del ObjectMoved


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

  __slots__ = (
    '_factory_id', # string[uint_8]
    '_objectType', # Anki.Vector.Gateway.ObjectType
    '_rssi',       # int_8
  )

  @property
  def factory_id(self):
    "string[uint_8] factory_id struct property."
    return self._factory_id

  @factory_id.setter
  def factory_id(self, value):
    self._factory_id = msgbuffers.validate_string(
      'ObjectAvailable.factory_id', value, 255)

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

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

  @property
  def rssi(self):
    "int_8 rssi struct property."
    return self._rssi

  @rssi.setter
  def rssi(self, value):
    self._rssi = msgbuffers.validate_integer(
      'ObjectAvailable.rssi', value, -128, 127)

  def __init__(self, factory_id='', objectType=Anki.Vector.Gateway.ObjectType.UnknownObject, rssi=0):
    self.factory_id = factory_id
    self.objectType = objectType
    self.rssi = rssi

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new ObjectAvailable from the given BinaryReader."
    _factory_id = reader.read_string('B')
    _objectType = reader.read('i')
    _rssi = reader.read('b')
    return cls(_factory_id, _objectType, _rssi)

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

  def pack_to(self, writer):
    "Writes the current ObjectAvailable to the given BinaryWriter."
    writer.write_string(self._factory_id, 'B')
    writer.write(self._objectType, 'i')
    writer.write(self._rssi, 'b')

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

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

  def __len__(self):
    return (msgbuffers.size_string(self._factory_id, 'B') +
      msgbuffers.size(self._objectType, 'i') +
      msgbuffers.size(self._rssi, 'b'))

  def __str__(self):
    return '{type}(factory_id={factory_id}, objectType={objectType}, rssi={rssi})'.format(
      type=type(self).__name__,
      factory_id=msgbuffers.shorten_string(self._factory_id),
      objectType=self._objectType,
      rssi=self._rssi)

  def __repr__(self):
    return '{type}(factory_id={factory_id}, objectType={objectType}, rssi={rssi})'.format(
      type=type(self).__name__,
      factory_id=repr(self._factory_id),
      objectType=repr(self._objectType),
      rssi=repr(self._rssi))

Anki.Vector.Gateway.ObjectAvailable = ObjectAvailable
del ObjectAvailable


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

  __slots__ = (
    '_timestamp', # uint_32
    '_objectID',  # uint_32
  )

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Anki.Vector.Gateway.ObjectStoppedMoving = ObjectStoppedMoving
del ObjectStoppedMoving


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

  __slots__ = (
    '_timestamp', # uint_32
    '_objectID',  # uint_32
    '_upAxis',    # Anki.Vector.Gateway.UpAxis
  )

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

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

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

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

  @property
  def upAxis(self):
    "Anki.Vector.Gateway.UpAxis upAxis struct property."
    return self._upAxis

  @upAxis.setter
  def upAxis(self, value):
    self._upAxis = msgbuffers.validate_integer(
      'ObjectUpAxisChanged.upAxis', value, 0, 255)

  def __init__(self, timestamp=0, objectID=0, upAxis=Anki.Vector.Gateway.UpAxis.XNegative):
    self.timestamp = timestamp
    self.objectID = objectID
    self.upAxis = upAxis

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

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

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

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

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

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

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

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

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

Anki.Vector.Gateway.ObjectUpAxisChanged = ObjectUpAxisChanged
del ObjectUpAxisChanged


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

  __slots__ = (
    '_timestamp', # uint_32
    '_objectID',  # uint_32
  )

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Anki.Vector.Gateway.ObjectTapped = ObjectTapped
del ObjectTapped


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

  __slots__ = (
    '_timestamp', # uint_32
    '_objectID',  # uint_32
    '_accel',     # Anki.Vector.Gateway.ActiveAccel
  )

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

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

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

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

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

  @accel.setter
  def accel(self, value):
    self._accel = msgbuffers.validate_object(
      'ObjectAccel.accel', value, Anki.Vector.Gateway.ActiveAccel)

  def __init__(self, timestamp=0, objectID=0, accel=Anki.Vector.Gateway.ActiveAccel()):
    self.timestamp = timestamp
    self.objectID = objectID
    self.accel = accel

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new ObjectAccel from the given BinaryReader."
    _timestamp = reader.read('I')
    _objectID = reader.read('I')
    _accel = reader.read_object(Anki.Vector.Gateway.ActiveAccel.unpack_from)
    return cls(_timestamp, _objectID, _accel)

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

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

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

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

  def __len__(self):
    return (msgbuffers.size(self._timestamp, 'I') +
      msgbuffers.size(self._objectID, 'I') +
      msgbuffers.size_object(self._accel))

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

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

Anki.Vector.Gateway.ObjectAccel = ObjectAccel
del ObjectAccel


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

  __slots__ = (
    '_idTag',            # uint_32
    '_actionType',       # Anki.Vector.Gateway.RobotActionType
    '_result',           # Anki.Vector.Gateway.ActionResult
    '_subActionResults', # ActionResult[uint_8]
    '_completionInfo',   # Anki.Vector.Gateway.ActionCompletedUnion
  )

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

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

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

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

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

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

  @property
  def subActionResults(self):
    "ActionResult[uint_8] subActionResults struct property."
    return self._subActionResults

  @subActionResults.setter
  def subActionResults(self, value):
    self._subActionResults = msgbuffers.validate_varray(
      'RobotCompletedAction.subActionResults', value, 255,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 4294967295))

  @property
  def completionInfo(self):
    "Anki.Vector.Gateway.ActionCompletedUnion completionInfo struct property."
    return self._completionInfo

  @completionInfo.setter
  def completionInfo(self, value):
    self._completionInfo = msgbuffers.validate_object(
      'RobotCompletedAction.completionInfo', value, Anki.Vector.Gateway.ActionCompletedUnion)

  def __init__(self, idTag=0, actionType=Anki.Vector.Gateway.RobotActionType.UNKNOWN, result=Anki.Vector.Gateway.ActionResult.SUCCESS, subActionResults=(), completionInfo=Anki.Vector.Gateway.ActionCompletedUnion()):
    self.idTag = idTag
    self.actionType = actionType
    self.result = result
    self.subActionResults = subActionResults
    self.completionInfo = completionInfo

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotCompletedAction from the given BinaryReader."
    _idTag = reader.read('I')
    _actionType = reader.read('i')
    _result = reader.read('I')
    _subActionResults = reader.read_varray('I', 'B')
    _completionInfo = reader.read_object(Anki.Vector.Gateway.ActionCompletedUnion.unpack_from)
    return cls(_idTag, _actionType, _result, _subActionResults, _completionInfo)

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

  def pack_to(self, writer):
    "Writes the current RobotCompletedAction to the given BinaryWriter."
    writer.write(self._idTag, 'I')
    writer.write(self._actionType, 'i')
    writer.write(self._result, 'I')
    writer.write_varray(self._subActionResults, 'I', 'B')
    writer.write_object(self._completionInfo)

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._idTag == other._idTag and
        self._actionType == other._actionType and
        self._result == other._result and
        self._subActionResults == other._subActionResults and
        self._completionInfo == other._completionInfo)
    else:
      return NotImplemented

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

  def __len__(self):
    return (msgbuffers.size(self._idTag, 'I') +
      msgbuffers.size(self._actionType, 'i') +
      msgbuffers.size(self._result, 'I') +
      msgbuffers.size_varray(self._subActionResults, 'I', 'B') +
      msgbuffers.size_object(self._completionInfo))

  def __str__(self):
    return '{type}(idTag={idTag}, actionType={actionType}, result={result}, subActionResults={subActionResults}, completionInfo={completionInfo})'.format(
      type=type(self).__name__,
      idTag=self._idTag,
      actionType=self._actionType,
      result=self._result,
      subActionResults=msgbuffers.shorten_sequence(self._subActionResults),
      completionInfo=self._completionInfo)

  def __repr__(self):
    return '{type}(idTag={idTag}, actionType={actionType}, result={result}, subActionResults={subActionResults}, completionInfo={completionInfo})'.format(
      type=type(self).__name__,
      idTag=repr(self._idTag),
      actionType=repr(self._actionType),
      result=repr(self._result),
      subActionResults=repr(self._subActionResults),
      completionInfo=repr(self._completionInfo))

Anki.Vector.Gateway.RobotCompletedAction = RobotCompletedAction
del RobotCompletedAction


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

  __slots__ = (
    '_secondsSinceFirstEnrolled', # int_64
    '_secondsSinceLastUpdated',   # int_64
    '_secondsSinceLastSeen',      # int_64
    '_lastSeenSecondsSinceEpoch', # int_64
    '_faceID',                    # int_32
    '_name',                      # string[uint_8]
  )

  @property
  def secondsSinceFirstEnrolled(self):
    "int_64 secondsSinceFirstEnrolled struct property."
    return self._secondsSinceFirstEnrolled

  @secondsSinceFirstEnrolled.setter
  def secondsSinceFirstEnrolled(self, value):
    self._secondsSinceFirstEnrolled = msgbuffers.validate_integer(
      'LoadedKnownFace.secondsSinceFirstEnrolled', value, -9223372036854775808, 9223372036854775807)

  @property
  def secondsSinceLastUpdated(self):
    "int_64 secondsSinceLastUpdated struct property."
    return self._secondsSinceLastUpdated

  @secondsSinceLastUpdated.setter
  def secondsSinceLastUpdated(self, value):
    self._secondsSinceLastUpdated = msgbuffers.validate_integer(
      'LoadedKnownFace.secondsSinceLastUpdated', value, -9223372036854775808, 9223372036854775807)

  @property
  def secondsSinceLastSeen(self):
    "int_64 secondsSinceLastSeen struct property."
    return self._secondsSinceLastSeen

  @secondsSinceLastSeen.setter
  def secondsSinceLastSeen(self, value):
    self._secondsSinceLastSeen = msgbuffers.validate_integer(
      'LoadedKnownFace.secondsSinceLastSeen', value, -9223372036854775808, 9223372036854775807)

  @property
  def lastSeenSecondsSinceEpoch(self):
    "int_64 lastSeenSecondsSinceEpoch struct property."
    return self._lastSeenSecondsSinceEpoch

  @lastSeenSecondsSinceEpoch.setter
  def lastSeenSecondsSinceEpoch(self, value):
    self._lastSeenSecondsSinceEpoch = msgbuffers.validate_integer(
      'LoadedKnownFace.lastSeenSecondsSinceEpoch', value, -9223372036854775808, 9223372036854775807)

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

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

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

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

  def __init__(self, secondsSinceFirstEnrolled=0, secondsSinceLastUpdated=0, secondsSinceLastSeen=0, lastSeenSecondsSinceEpoch=0, faceID=0, name=''):
    self.secondsSinceFirstEnrolled = secondsSinceFirstEnrolled
    self.secondsSinceLastUpdated = secondsSinceLastUpdated
    self.secondsSinceLastSeen = secondsSinceLastSeen
    self.lastSeenSecondsSinceEpoch = lastSeenSecondsSinceEpoch
    self.faceID = faceID
    self.name = name

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

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

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

  def pack_to(self, writer):
    "Writes the current LoadedKnownFace to the given BinaryWriter."
    writer.write(self._secondsSinceFirstEnrolled, 'q')
    writer.write(self._secondsSinceLastUpdated, 'q')
    writer.write(self._secondsSinceLastSeen, 'q')
    writer.write(self._lastSeenSecondsSinceEpoch, 'q')
    writer.write(self._faceID, 'i')
    writer.write_string(self._name, 'B')

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

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

  def __len__(self):
    return (msgbuffers.size(self._secondsSinceFirstEnrolled, 'q') +
      msgbuffers.size(self._secondsSinceLastUpdated, 'q') +
      msgbuffers.size(self._secondsSinceLastSeen, 'q') +
      msgbuffers.size(self._lastSeenSecondsSinceEpoch, 'q') +
      msgbuffers.size(self._faceID, 'i') +
      msgbuffers.size_string(self._name, 'B'))

  def __str__(self):
    return '{type}(secondsSinceFirstEnrolled={secondsSinceFirstEnrolled}, secondsSinceLastUpdated={secondsSinceLastUpdated}, secondsSinceLastSeen={secondsSinceLastSeen}, lastSeenSecondsSinceEpoch={lastSeenSecondsSinceEpoch}, faceID={faceID}, name={name})'.format(
      type=type(self).__name__,
      secondsSinceFirstEnrolled=self._secondsSinceFirstEnrolled,
      secondsSinceLastUpdated=self._secondsSinceLastUpdated,
      secondsSinceLastSeen=self._secondsSinceLastSeen,
      lastSeenSecondsSinceEpoch=self._lastSeenSecondsSinceEpoch,
      faceID=self._faceID,
      name=msgbuffers.shorten_string(self._name))

  def __repr__(self):
    return '{type}(secondsSinceFirstEnrolled={secondsSinceFirstEnrolled}, secondsSinceLastUpdated={secondsSinceLastUpdated}, secondsSinceLastSeen={secondsSinceLastSeen}, lastSeenSecondsSinceEpoch={lastSeenSecondsSinceEpoch}, faceID={faceID}, name={name})'.format(
      type=type(self).__name__,
      secondsSinceFirstEnrolled=repr(self._secondsSinceFirstEnrolled),
      secondsSinceLastUpdated=repr(self._secondsSinceLastUpdated),
      secondsSinceLastSeen=repr(self._secondsSinceLastSeen),
      lastSeenSecondsSinceEpoch=repr(self._lastSeenSecondsSinceEpoch),
      faceID=repr(self._faceID),
      name=repr(self._name))

Anki.Vector.Gateway.LoadedKnownFace = LoadedKnownFace
del LoadedKnownFace


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

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

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

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

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

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

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

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

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

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

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

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

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

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

Anki.Vector.Gateway.EnrolledNamesResponse = EnrolledNamesResponse
del EnrolledNamesResponse


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

  __slots__ = (
    '_x', # float_32
    '_y', # float_32
    '_z', # float_32
  )

  @property
  def x(self):
    "float_32 x struct property."
    return self._x

  @x.setter
  def x(self, value):
    self._x = msgbuffers.validate_float(
      'AccelData.x', value, 'f')

  @property
  def y(self):
    "float_32 y struct property."
    return self._y

  @y.setter
  def y(self, value):
    self._y = msgbuffers.validate_float(
      'AccelData.y', value, 'f')

  @property
  def z(self):
    "float_32 z struct property."
    return self._z

  @z.setter
  def z(self, value):
    self._z = msgbuffers.validate_float(
      'AccelData.z', value, 'f')

  def __init__(self, x=0.0, y=0.0, z=0.0):
    self.x = x
    self.y = y
    self.z = z

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

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

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

  def pack_to(self, writer):
    "Writes the current AccelData to the given BinaryWriter."
    writer.write(self._x, 'f')
    writer.write(self._y, 'f')
    writer.write(self._z, 'f')

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

  def __str__(self):
    return '{type}(x={x}, y={y}, z={z})'.format(
      type=type(self).__name__,
      x=self._x,
      y=self._y,
      z=self._z)

  def __repr__(self):
    return '{type}(x={x}, y={y}, z={z})'.format(
      type=type(self).__name__,
      x=repr(self._x),
      y=repr(self._y),
      z=repr(self._z))

Anki.Vector.Gateway.AccelData = AccelData
del AccelData


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

  __slots__ = (
    '_x', # float_32
    '_y', # float_32
    '_z', # float_32
  )

  @property
  def x(self):
    "float_32 x struct property."
    return self._x

  @x.setter
  def x(self, value):
    self._x = msgbuffers.validate_float(
      'GyroData.x', value, 'f')

  @property
  def y(self):
    "float_32 y struct property."
    return self._y

  @y.setter
  def y(self, value):
    self._y = msgbuffers.validate_float(
      'GyroData.y', value, 'f')

  @property
  def z(self):
    "float_32 z struct property."
    return self._z

  @z.setter
  def z(self, value):
    self._z = msgbuffers.validate_float(
      'GyroData.z', value, 'f')

  def __init__(self, x=0.0, y=0.0, z=0.0):
    self.x = x
    self.y = y
    self.z = z

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

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

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

  def pack_to(self, writer):
    "Writes the current GyroData to the given BinaryWriter."
    writer.write(self._x, 'f')
    writer.write(self._y, 'f')
    writer.write(self._z, 'f')

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

  def __str__(self):
    return '{type}(x={x}, y={y}, z={z})'.format(
      type=type(self).__name__,
      x=self._x,
      y=self._y,
      z=self._z)

  def __repr__(self):
    return '{type}(x={x}, y={y}, z={z})'.format(
      type=type(self).__name__,
      x=repr(self._x),
      y=repr(self._y),
      z=repr(self._z))

Anki.Vector.Gateway.GyroData = GyroData
del GyroData


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

  __slots__ = (
    '_x', # float_32
    '_y', # float_32
  )

  @property
  def x(self):
    "float_32 x struct property."
    return self._x

  @x.setter
  def x(self, value):
    self._x = msgbuffers.validate_float(
      'CladPoint2d.x', value, 'f')

  @property
  def y(self):
    "float_32 y struct property."
    return self._y

  @y.setter
  def y(self, value):
    self._y = msgbuffers.validate_float(
      'CladPoint2d.y', value, 'f')

  def __init__(self, x=0.0, y=0.0):
    self.x = x
    self.y = y

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

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

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

  def pack_to(self, writer):
    "Writes the current CladPoint2d to the given BinaryWriter."
    writer.write(self._x, 'f')
    writer.write(self._y, 'f')

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

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

  def __len__(self):
    return (msgbuffers.size(self._x, 'f') +
      msgbuffers.size(self._y, 'f'))

  def __str__(self):
    return '{type}(x={x}, y={y})'.format(
      type=type(self).__name__,
      x=self._x,
      y=self._y)

  def __repr__(self):
    return '{type}(x={x}, y={y})'.format(
      type=type(self).__name__,
      x=repr(self._x),
      y=repr(self._y))

Anki.Vector.Gateway.CladPoint2d = CladPoint2d
del CladPoint2d


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

  __slots__ = (
    '_x_topLeft', # float_32
    '_y_topLeft', # float_32
    '_width',     # float_32
    '_height',    # float_32
  )

  @property
  def x_topLeft(self):
    "float_32 x_topLeft struct property."
    return self._x_topLeft

  @x_topLeft.setter
  def x_topLeft(self, value):
    self._x_topLeft = msgbuffers.validate_float(
      'CladRect.x_topLeft', value, 'f')

  @property
  def y_topLeft(self):
    "float_32 y_topLeft struct property."
    return self._y_topLeft

  @y_topLeft.setter
  def y_topLeft(self, value):
    self._y_topLeft = msgbuffers.validate_float(
      'CladRect.y_topLeft', value, 'f')

  @property
  def width(self):
    "float_32 width struct property."
    return self._width

  @width.setter
  def width(self, value):
    self._width = msgbuffers.validate_float(
      'CladRect.width', value, 'f')

  @property
  def height(self):
    "float_32 height struct property."
    return self._height

  @height.setter
  def height(self, value):
    self._height = msgbuffers.validate_float(
      'CladRect.height', value, 'f')

  def __init__(self, x_topLeft=0.0, y_topLeft=0.0, width=0.0, height=0.0):
    self.x_topLeft = x_topLeft
    self.y_topLeft = y_topLeft
    self.width = width
    self.height = height

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new CladRect from the given BinaryReader."
    _x_topLeft = reader.read('f')
    _y_topLeft = reader.read('f')
    _width = reader.read('f')
    _height = reader.read('f')
    return cls(_x_topLeft, _y_topLeft, _width, _height)

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

  def pack_to(self, writer):
    "Writes the current CladRect to the given BinaryWriter."
    writer.write(self._x_topLeft, 'f')
    writer.write(self._y_topLeft, 'f')
    writer.write(self._width, 'f')
    writer.write(self._height, 'f')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._x_topLeft == other._x_topLeft and
        self._y_topLeft == other._y_topLeft and
        self._width == other._width and
        self._height == other._height)
    else:
      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_topLeft, 'f') +
      msgbuffers.size(self._y_topLeft, 'f') +
      msgbuffers.size(self._width, 'f') +
      msgbuffers.size(self._height, 'f'))

  def __str__(self):
    return '{type}(x_topLeft={x_topLeft}, y_topLeft={y_topLeft}, width={width}, height={height})'.format(
      type=type(self).__name__,
      x_topLeft=self._x_topLeft,
      y_topLeft=self._y_topLeft,
      width=self._width,
      height=self._height)

  def __repr__(self):
    return '{type}(x_topLeft={x_topLeft}, y_topLeft={y_topLeft}, width={width}, height={height})'.format(
      type=type(self).__name__,
      x_topLeft=repr(self._x_topLeft),
      y_topLeft=repr(self._y_topLeft),
      width=repr(self._width),
      height=repr(self._height))

Anki.Vector.Gateway.CladRect = CladRect
del CladRect


class FacialExpression(object):
  "Automatically-generated int_8 enumeration."
  Unknown   = -1
  Neutral   = 0
  Happiness = 1
  Surprise  = 2
  Anger     = 3
  Sadness   = 4
  Count     = 5

Anki.Vector.Gateway.FacialExpression = FacialExpression
del FacialExpression


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

  __slots__ = (
    '_wasChecked', # bool
    '_amount',     # float_32
    '_confidence', # float_32
  )

  @property
  def wasChecked(self):
    "bool wasChecked struct property."
    return self._wasChecked

  @wasChecked.setter
  def wasChecked(self, value):
    self._wasChecked = msgbuffers.validate_bool(
      'SmileAmount.wasChecked', value)

  @property
  def amount(self):
    "float_32 amount struct property."
    return self._amount

  @amount.setter
  def amount(self, value):
    self._amount = msgbuffers.validate_float(
      'SmileAmount.amount', value, 'f')

  @property
  def confidence(self):
    "float_32 confidence struct property."
    return self._confidence

  @confidence.setter
  def confidence(self, value):
    self._confidence = msgbuffers.validate_float(
      'SmileAmount.confidence', value, 'f')

  def __init__(self, wasChecked=False, amount=0.0, confidence=0.0):
    self.wasChecked = wasChecked
    self.amount = amount
    self.confidence = confidence

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new SmileAmount from the given BinaryReader."
    _wasChecked = bool(reader.read('b'))
    _amount = reader.read('f')
    _confidence = reader.read('f')
    return cls(_wasChecked, _amount, _confidence)

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

  def pack_to(self, writer):
    "Writes the current SmileAmount to the given BinaryWriter."
    writer.write(int(self._wasChecked), 'b')
    writer.write(self._amount, 'f')
    writer.write(self._confidence, 'f')

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

  def __str__(self):
    return '{type}(wasChecked={wasChecked}, amount={amount}, confidence={confidence})'.format(
      type=type(self).__name__,
      wasChecked=self._wasChecked,
      amount=self._amount,
      confidence=self._confidence)

  def __repr__(self):
    return '{type}(wasChecked={wasChecked}, amount={amount}, confidence={confidence})'.format(
      type=type(self).__name__,
      wasChecked=repr(self._wasChecked),
      amount=repr(self._amount),
      confidence=repr(self._confidence))

Anki.Vector.Gateway.SmileAmount = SmileAmount
del SmileAmount


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

  __slots__ = (
    '_wasChecked',    # bool
    '_leftRight_deg', # float_32
    '_upDown_deg',    # float_32
  )

  @property
  def wasChecked(self):
    "bool wasChecked struct property."
    return self._wasChecked

  @wasChecked.setter
  def wasChecked(self, value):
    self._wasChecked = msgbuffers.validate_bool(
      'Gaze.wasChecked', value)

  @property
  def leftRight_deg(self):
    "float_32 leftRight_deg struct property."
    return self._leftRight_deg

  @leftRight_deg.setter
  def leftRight_deg(self, value):
    self._leftRight_deg = msgbuffers.validate_float(
      'Gaze.leftRight_deg', value, 'f')

  @property
  def upDown_deg(self):
    "float_32 upDown_deg struct property."
    return self._upDown_deg

  @upDown_deg.setter
  def upDown_deg(self, value):
    self._upDown_deg = msgbuffers.validate_float(
      'Gaze.upDown_deg', value, 'f')

  def __init__(self, wasChecked=False, leftRight_deg=0.0, upDown_deg=0.0):
    self.wasChecked = wasChecked
    self.leftRight_deg = leftRight_deg
    self.upDown_deg = upDown_deg

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new Gaze from the given BinaryReader."
    _wasChecked = bool(reader.read('b'))
    _leftRight_deg = reader.read('f')
    _upDown_deg = reader.read('f')
    return cls(_wasChecked, _leftRight_deg, _upDown_deg)

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

  def pack_to(self, writer):
    "Writes the current Gaze to the given BinaryWriter."
    writer.write(int(self._wasChecked), 'b')
    writer.write(self._leftRight_deg, 'f')
    writer.write(self._upDown_deg, 'f')

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

  def __str__(self):
    return '{type}(wasChecked={wasChecked}, leftRight_deg={leftRight_deg}, upDown_deg={upDown_deg})'.format(
      type=type(self).__name__,
      wasChecked=self._wasChecked,
      leftRight_deg=self._leftRight_deg,
      upDown_deg=self._upDown_deg)

  def __repr__(self):
    return '{type}(wasChecked={wasChecked}, leftRight_deg={leftRight_deg}, upDown_deg={upDown_deg})'.format(
      type=type(self).__name__,
      wasChecked=repr(self._wasChecked),
      leftRight_deg=repr(self._leftRight_deg),
      upDown_deg=repr(self._upDown_deg))

Anki.Vector.Gateway.Gaze = Gaze
del Gaze


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

  __slots__ = (
    '_wasChecked',       # bool
    '_blinkAmountLeft',  # float_32
    '_blinkAmountRight', # float_32
  )

  @property
  def wasChecked(self):
    "bool wasChecked struct property."
    return self._wasChecked

  @wasChecked.setter
  def wasChecked(self, value):
    self._wasChecked = msgbuffers.validate_bool(
      'BlinkAmount.wasChecked', value)

  @property
  def blinkAmountLeft(self):
    "float_32 blinkAmountLeft struct property."
    return self._blinkAmountLeft

  @blinkAmountLeft.setter
  def blinkAmountLeft(self, value):
    self._blinkAmountLeft = msgbuffers.validate_float(
      'BlinkAmount.blinkAmountLeft', value, 'f')

  @property
  def blinkAmountRight(self):
    "float_32 blinkAmountRight struct property."
    return self._blinkAmountRight

  @blinkAmountRight.setter
  def blinkAmountRight(self, value):
    self._blinkAmountRight = msgbuffers.validate_float(
      'BlinkAmount.blinkAmountRight', value, 'f')

  def __init__(self, wasChecked=False, blinkAmountLeft=0.0, blinkAmountRight=0.0):
    self.wasChecked = wasChecked
    self.blinkAmountLeft = blinkAmountLeft
    self.blinkAmountRight = blinkAmountRight

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new BlinkAmount from the given BinaryReader."
    _wasChecked = bool(reader.read('b'))
    _blinkAmountLeft = reader.read('f')
    _blinkAmountRight = reader.read('f')
    return cls(_wasChecked, _blinkAmountLeft, _blinkAmountRight)

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

  def pack_to(self, writer):
    "Writes the current BlinkAmount to the given BinaryWriter."
    writer.write(int(self._wasChecked), 'b')
    writer.write(self._blinkAmountLeft, 'f')
    writer.write(self._blinkAmountRight, 'f')

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

  def __str__(self):
    return '{type}(wasChecked={wasChecked}, blinkAmountLeft={blinkAmountLeft}, blinkAmountRight={blinkAmountRight})'.format(
      type=type(self).__name__,
      wasChecked=self._wasChecked,
      blinkAmountLeft=self._blinkAmountLeft,
      blinkAmountRight=self._blinkAmountRight)

  def __repr__(self):
    return '{type}(wasChecked={wasChecked}, blinkAmountLeft={blinkAmountLeft}, blinkAmountRight={blinkAmountRight})'.format(
      type=type(self).__name__,
      wasChecked=repr(self._wasChecked),
      blinkAmountLeft=repr(self._blinkAmountLeft),
      blinkAmountRight=repr(self._blinkAmountRight))

Anki.Vector.Gateway.BlinkAmount = BlinkAmount
del BlinkAmount


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

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

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

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

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

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

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

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

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

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

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

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

  @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(
      'RobotObservedObject.pose', value, Anki.Vector.Gateway.PoseStruct3d)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Anki.Vector.Gateway.RobotObservedObject = RobotObservedObject
del RobotObservedObject


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

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

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

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

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

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

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

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

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

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

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

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

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

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

Anki.Vector.Gateway.RobotObservedPossibleObject = RobotObservedPossibleObject
del RobotObservedPossibleObject


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  @expressionValues.setter
  def expressionValues(self, value):
    self._expressionValues = msgbuffers.validate_varray(
      'RobotObservedFace.expressionValues', value, 255,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 255))

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Anki.Vector.Gateway.RobotObservedFace = RobotObservedFace
del RobotObservedFace


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Anki.Vector.Gateway.RobotChangedObservedFaceID = RobotChangedObservedFaceID
del RobotChangedObservedFaceID


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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

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

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

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

  def __len__(self):
    return 0

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

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

Anki.Vector.Gateway.RequiredEmptyMessage = RequiredEmptyMessage
del RequiredEmptyMessage


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

  __slots__ = ('_tag', '_data')

  class Tag(object):
    "The type indicator for this union."
    replaceMe = 0 # Anki.Vector.Gateway.RequiredEmptyMessage

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

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

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

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

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

  def __init__(self, **kwargs):
    if not kwargs:
      self._tag = None
      self._data = None

    elif len(kwargs) == 1:
      key, value = next(iter(kwargs.items()))
      if key not in self._tags_by_name:
        raise TypeError("'{argument}' is an invalid keyword argument for this method.".format(argument=key))
      # calls the correct property
      setattr(self, key, value)

    else:
      raise TypeError('This method only accepts up to one keyword argument.')

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new Event from the given BinaryReader."
    tag = reader.read('B')
    if tag in cls._tags_by_value:
      value = cls()
      setattr(value, cls._tags_by_value[tag], cls._tag_unpack_methods[tag](reader))
      return value
    else:
      raise ValueError('Event attempted to unpack unknown tag {tag}.'.format(tag=tag))

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

  def pack_to(self, writer):
    "Writes the current SampleUnion to the given BinaryWriter."
    if self._tag in self._tags_by_value:
      writer.write(self._tag, 'B')
      self._tag_pack_methods[self._tag](writer, self._data)
    else:
      raise ValueError('Cannot pack an empty Event.')

  def clear(self):
    self._tag = None
    self._data = None

  @classmethod
  def typeByTag(cls, tag):
    return cls._type_by_tag_value[tag]()

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

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

  def __len__(self):
    if 0 <= self._tag < 1:
      return self._tag_size_methods[self._tag](self._data)
    else:
      return 1

  def __str__(self):
    if 0 <= self._tag < 1:
      return '{type}({name}={value})'.format(
        type=type(self).__name__,
        name=self.tag_name,
        value=self._data)
    else:
      return '{type}()'.format(
        type=type(self).__name__)

  def __repr__(self):
    if 0 <= self._tag < 1:
      return '{type}({name}={value})'.format(
        type=type(self).__name__,
        name=self.tag_name,
        value=repr(self._data))
    else:
      return '{type}()'.format(
        type=type(self).__name__)

  _tags_by_name = dict(
    replaceMe=0,
  )

  _tags_by_value = dict()
  _tags_by_value[0] = 'replaceMe'
  

  _tag_unpack_methods = dict()
  _tag_unpack_methods[0] = lambda reader: reader.read_object(Anki.Vector.Gateway.RequiredEmptyMessage.unpack_from)
  

  _tag_pack_methods = dict()
  _tag_pack_methods[0] = lambda writer, value: writer.write_object(value)
  

  _tag_size_methods = dict()
  _tag_size_methods[0] = lambda value: msgbuffers.size_object(value)
  

  _type_by_tag_value = dict()
  _type_by_tag_value[0] = lambda : Anki.Vector.Gateway.RequiredEmptyMessage
  

Anki.Vector.Gateway.Event = Event
del Event


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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

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

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

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

  def __len__(self):
    return 0

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

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

Anki.Vector.Gateway.RobotDeletedFixedCustomObjects = RobotDeletedFixedCustomObjects
del RobotDeletedFixedCustomObjects


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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

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

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

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

  def __len__(self):
    return 0

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

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

Anki.Vector.Gateway.RobotDeletedCustomMarkerObjects = RobotDeletedCustomMarkerObjects
del RobotDeletedCustomMarkerObjects


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

  __slots__ = (
    '_objectID', # uint_32
  )

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

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

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

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

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

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

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

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

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

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

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

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

Anki.Vector.Gateway.CreatedFixedCustomObject = CreatedFixedCustomObject
del CreatedFixedCustomObject


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

  __slots__ = (
    '_success', # bool
  )

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

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

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

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

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

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

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

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

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

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

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

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

Anki.Vector.Gateway.DefinedCustomObject = DefinedCustomObject
del DefinedCustomObject


class ENodeContentTypeEnum(object):
  "Automatically-generated uint_8 enumeration."
  Unknown              = 0
  ClearOfObstacle      = 1
  ClearOfCliff         = 2
  ObstacleCube         = 3
  ObstacleProx         = 4
  ObstacleProxExplored = 5
  ObstacleUnrecognized = 6
  Cliff                = 7
  InterestingEdge      = 8
  NotInterestingEdge   = 9

Anki.Vector.Gateway.ENodeContentTypeEnum = ENodeContentTypeEnum
del ENodeContentTypeEnum


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

  __slots__ = (
    '_content',   # Anki.Vector.Gateway.ENodeContentTypeEnum
    '_depth',     # uint_8
    '_colorRGBA', # uint_32
  )

  @property
  def content(self):
    "Anki.Vector.Gateway.ENodeContentTypeEnum content struct property."
    return self._content

  @content.setter
  def content(self, value):
    self._content = msgbuffers.validate_integer(
      'MemoryMapQuadInfo.content', value, 0, 255)

  @property
  def depth(self):
    "uint_8 depth struct property."
    return self._depth

  @depth.setter
  def depth(self, value):
    self._depth = msgbuffers.validate_integer(
      'MemoryMapQuadInfo.depth', value, 0, 255)

  @property
  def colorRGBA(self):
    "uint_32 colorRGBA struct property."
    return self._colorRGBA

  @colorRGBA.setter
  def colorRGBA(self, value):
    self._colorRGBA = msgbuffers.validate_integer(
      'MemoryMapQuadInfo.colorRGBA', value, 0, 4294967295)

  def __init__(self, content=Anki.Vector.Gateway.ENodeContentTypeEnum.Unknown, depth=0, colorRGBA=0):
    self.content = content
    self.depth = depth
    self.colorRGBA = colorRGBA

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new MemoryMapQuadInfo from the given BinaryReader."
    _content = reader.read('B')
    _depth = reader.read('B')
    _colorRGBA = reader.read('I')
    return cls(_content, _depth, _colorRGBA)

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

  def pack_to(self, writer):
    "Writes the current MemoryMapQuadInfo to the given BinaryWriter."
    writer.write(self._content, 'B')
    writer.write(self._depth, 'B')
    writer.write(self._colorRGBA, 'I')

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

  def __str__(self):
    return '{type}(content={content}, depth={depth}, colorRGBA={colorRGBA})'.format(
      type=type(self).__name__,
      content=self._content,
      depth=self._depth,
      colorRGBA=self._colorRGBA)

  def __repr__(self):
    return '{type}(content={content}, depth={depth}, colorRGBA={colorRGBA})'.format(
      type=type(self).__name__,
      content=repr(self._content),
      depth=repr(self._depth),
      colorRGBA=repr(self._colorRGBA))

Anki.Vector.Gateway.MemoryMapQuadInfo = MemoryMapQuadInfo
del MemoryMapQuadInfo


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

  __slots__ = (
    '_originId',    # uint_32
    '_rootDepth',   # int_32
    '_rootSize_mm', # float_32
    '_rootCenterX', # float_32
    '_rootCenterY', # float_32
  )

  @property
  def originId(self):
    "uint_32 originId struct property."
    return self._originId

  @originId.setter
  def originId(self, value):
    self._originId = msgbuffers.validate_integer(
      'MemoryMapMessageBegin.originId', value, 0, 4294967295)

  @property
  def rootDepth(self):
    "int_32 rootDepth struct property."
    return self._rootDepth

  @rootDepth.setter
  def rootDepth(self, value):
    self._rootDepth = msgbuffers.validate_integer(
      'MemoryMapMessageBegin.rootDepth', value, -2147483648, 2147483647)

  @property
  def rootSize_mm(self):
    "float_32 rootSize_mm struct property."
    return self._rootSize_mm

  @rootSize_mm.setter
  def rootSize_mm(self, value):
    self._rootSize_mm = msgbuffers.validate_float(
      'MemoryMapMessageBegin.rootSize_mm', value, 'f')

  @property
  def rootCenterX(self):
    "float_32 rootCenterX struct property."
    return self._rootCenterX

  @rootCenterX.setter
  def rootCenterX(self, value):
    self._rootCenterX = msgbuffers.validate_float(
      'MemoryMapMessageBegin.rootCenterX', value, 'f')

  @property
  def rootCenterY(self):
    "float_32 rootCenterY struct property."
    return self._rootCenterY

  @rootCenterY.setter
  def rootCenterY(self, value):
    self._rootCenterY = msgbuffers.validate_float(
      'MemoryMapMessageBegin.rootCenterY', value, 'f')

  def __init__(self, originId=0, rootDepth=0, rootSize_mm=0.0, rootCenterX=0.0, rootCenterY=0.0):
    self.originId = originId
    self.rootDepth = rootDepth
    self.rootSize_mm = rootSize_mm
    self.rootCenterX = rootCenterX
    self.rootCenterY = rootCenterY

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new MemoryMapMessageBegin from the given BinaryReader."
    _originId = reader.read('I')
    _rootDepth = reader.read('i')
    _rootSize_mm = reader.read('f')
    _rootCenterX = reader.read('f')
    _rootCenterY = reader.read('f')
    return cls(_originId, _rootDepth, _rootSize_mm, _rootCenterX, _rootCenterY)

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

  def pack_to(self, writer):
    "Writes the current MemoryMapMessageBegin to the given BinaryWriter."
    writer.write(self._originId, 'I')
    writer.write(self._rootDepth, 'i')
    writer.write(self._rootSize_mm, 'f')
    writer.write(self._rootCenterX, 'f')
    writer.write(self._rootCenterY, 'f')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._originId == other._originId and
        self._rootDepth == other._rootDepth and
        self._rootSize_mm == other._rootSize_mm and
        self._rootCenterX == other._rootCenterX and
        self._rootCenterY == other._rootCenterY)
    else:
      return NotImplemented

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

  def __len__(self):
    return (msgbuffers.size(self._originId, 'I') +
      msgbuffers.size(self._rootDepth, 'i') +
      msgbuffers.size(self._rootSize_mm, 'f') +
      msgbuffers.size(self._rootCenterX, 'f') +
      msgbuffers.size(self._rootCenterY, 'f'))

  def __str__(self):
    return '{type}(originId={originId}, rootDepth={rootDepth}, rootSize_mm={rootSize_mm}, rootCenterX={rootCenterX}, rootCenterY={rootCenterY})'.format(
      type=type(self).__name__,
      originId=self._originId,
      rootDepth=self._rootDepth,
      rootSize_mm=self._rootSize_mm,
      rootCenterX=self._rootCenterX,
      rootCenterY=self._rootCenterY)

  def __repr__(self):
    return '{type}(originId={originId}, rootDepth={rootDepth}, rootSize_mm={rootSize_mm}, rootCenterX={rootCenterX}, rootCenterY={rootCenterY})'.format(
      type=type(self).__name__,
      originId=repr(self._originId),
      rootDepth=repr(self._rootDepth),
      rootSize_mm=repr(self._rootSize_mm),
      rootCenterX=repr(self._rootCenterX),
      rootCenterY=repr(self._rootCenterY))

Anki.Vector.Gateway.MemoryMapMessageBegin = MemoryMapMessageBegin
del MemoryMapMessageBegin


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

  __slots__ = (
    '_quadInfos', # MemoryMapQuadInfo[uint_16]
  )

  @property
  def quadInfos(self):
    "MemoryMapQuadInfo[uint_16] quadInfos struct property."
    return self._quadInfos

  @quadInfos.setter
  def quadInfos(self, value):
    self._quadInfos = msgbuffers.validate_varray(
      'MemoryMapMessage.quadInfos', value, 65535,
      lambda name, value_inner: msgbuffers.validate_object(
        name, value_inner, Anki.Vector.Gateway.MemoryMapQuadInfo))

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

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new MemoryMapMessage from the given BinaryReader."
    _quadInfos = reader.read_object_varray(Anki.Vector.Gateway.MemoryMapQuadInfo.unpack_from, 'H')
    return cls(_quadInfos)

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

  def pack_to(self, writer):
    "Writes the current MemoryMapMessage to the given BinaryWriter."
    writer.write_object_varray(self._quadInfos, 'H')

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

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

  def __len__(self):
    return (msgbuffers.size_object_varray(self._quadInfos, 'H'))

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

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

Anki.Vector.Gateway.MemoryMapMessage = MemoryMapMessage
del MemoryMapMessage


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

  __slots__ = ()

  def __init__(self):
    pass

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

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

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

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

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

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

  def __len__(self):
    return 0

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

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

Anki.Vector.Gateway.MemoryMapMessageEnd = MemoryMapMessageEnd
del MemoryMapMessageEnd


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

  __slots__ = ('_tag', '_data')

  class Tag(object):
    "The type indicator for this union."
    UiDeviceConnected               = 0x0  # Anki.Vector.Gateway.UiDeviceConnected
    RobotCompletedAction            = 0x1  # Anki.Vector.Gateway.RobotCompletedAction
    Event                           = 0x2  # Anki.Vector.Gateway.Event
    EnrolledNamesResponse           = 0x5  # Anki.Vector.Gateway.EnrolledNamesResponse
    RobotObservedFace               = 0x6  # Anki.Vector.Gateway.RobotObservedFace
    RobotChangedObservedFaceID      = 0x7  # Anki.Vector.Gateway.RobotChangedObservedFaceID
    ObjectConnectionState           = 0xa  # Anki.Vector.Gateway.ObjectConnectionState
    ObjectMoved                     = 0xb  # Anki.Vector.Gateway.ObjectMoved
    ObjectStoppedMoving             = 0xc  # Anki.Vector.Gateway.ObjectStoppedMoving
    ObjectUpAxisChanged             = 0xd  # Anki.Vector.Gateway.ObjectUpAxisChanged
    ObjectTapped                    = 0xe  # Anki.Vector.Gateway.ObjectTapped
    ObjectAccel                     = 0xf  # Anki.Vector.Gateway.ObjectAccel
    RobotObservedObject             = 0x10 # Anki.Vector.Gateway.RobotObservedObject
    ObjectAvailable                 = 0x11 # Anki.Vector.Gateway.ObjectAvailable
    RobotDeletedFixedCustomObjects  = 0x12 # Anki.Vector.Gateway.RobotDeletedFixedCustomObjects
    RobotDeletedCustomMarkerObjects = 0x13 # Anki.Vector.Gateway.RobotDeletedCustomMarkerObjects
    CreatedFixedCustomObject        = 0x14 # Anki.Vector.Gateway.CreatedFixedCustomObject
    DefinedCustomObject             = 0x15 # Anki.Vector.Gateway.DefinedCustomObject
    MemoryMapMessageBegin           = 0x16 # Anki.Vector.Gateway.MemoryMapMessageBegin
    MemoryMapMessage                = 0x17 # Anki.Vector.Gateway.MemoryMapMessage
    MemoryMapMessageEnd             = 0x18 # Anki.Vector.Gateway.MemoryMapMessageEnd

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  _tags_by_name = dict(
    UiDeviceConnected=0,
    RobotCompletedAction=1,
    Event=2,
    EnrolledNamesResponse=5,
    RobotObservedFace=6,
    RobotChangedObservedFaceID=7,
    ObjectConnectionState=10,
    ObjectMoved=11,
    ObjectStoppedMoving=12,
    ObjectUpAxisChanged=13,
    ObjectTapped=14,
    ObjectAccel=15,
    RobotObservedObject=16,
    ObjectAvailable=17,
    RobotDeletedFixedCustomObjects=18,
    RobotDeletedCustomMarkerObjects=19,
    CreatedFixedCustomObject=20,
    DefinedCustomObject=21,
    MemoryMapMessageBegin=22,
    MemoryMapMessage=23,
    MemoryMapMessageEnd=24,
  )

  _tags_by_value = dict()
  _tags_by_value[0] = 'UiDeviceConnected'
  _tags_by_value[1] = 'RobotCompletedAction'
  _tags_by_value[2] = 'Event'
  _tags_by_value[5] = 'EnrolledNamesResponse'
  _tags_by_value[6] = 'RobotObservedFace'
  _tags_by_value[7] = 'RobotChangedObservedFaceID'
  _tags_by_value[10] = 'ObjectConnectionState'
  _tags_by_value[11] = 'ObjectMoved'
  _tags_by_value[12] = 'ObjectStoppedMoving'
  _tags_by_value[13] = 'ObjectUpAxisChanged'
  _tags_by_value[14] = 'ObjectTapped'
  _tags_by_value[15] = 'ObjectAccel'
  _tags_by_value[16] = 'RobotObservedObject'
  _tags_by_value[17] = 'ObjectAvailable'
  _tags_by_value[18] = 'RobotDeletedFixedCustomObjects'
  _tags_by_value[19] = 'RobotDeletedCustomMarkerObjects'
  _tags_by_value[20] = 'CreatedFixedCustomObject'
  _tags_by_value[21] = 'DefinedCustomObject'
  _tags_by_value[22] = 'MemoryMapMessageBegin'
  _tags_by_value[23] = 'MemoryMapMessage'
  _tags_by_value[24] = 'MemoryMapMessageEnd'
  

  _tag_unpack_methods = dict()
  _tag_unpack_methods[0] = lambda reader: reader.read_object(Anki.Vector.Gateway.UiDeviceConnected.unpack_from)
  _tag_unpack_methods[1] = lambda reader: reader.read_object(Anki.Vector.Gateway.RobotCompletedAction.unpack_from)
  _tag_unpack_methods[2] = lambda reader: reader.read_object(Anki.Vector.Gateway.Event.unpack_from)
  _tag_unpack_methods[5] = lambda reader: reader.read_object(Anki.Vector.Gateway.EnrolledNamesResponse.unpack_from)
  _tag_unpack_methods[6] = lambda reader: reader.read_object(Anki.Vector.Gateway.RobotObservedFace.unpack_from)
  _tag_unpack_methods[7] = lambda reader: reader.read_object(Anki.Vector.Gateway.RobotChangedObservedFaceID.unpack_from)
  _tag_unpack_methods[10] = lambda reader: reader.read_object(Anki.Vector.Gateway.ObjectConnectionState.unpack_from)
  _tag_unpack_methods[11] = lambda reader: reader.read_object(Anki.Vector.Gateway.ObjectMoved.unpack_from)
  _tag_unpack_methods[12] = lambda reader: reader.read_object(Anki.Vector.Gateway.ObjectStoppedMoving.unpack_from)
  _tag_unpack_methods[13] = lambda reader: reader.read_object(Anki.Vector.Gateway.ObjectUpAxisChanged.unpack_from)
  _tag_unpack_methods[14] = lambda reader: reader.read_object(Anki.Vector.Gateway.ObjectTapped.unpack_from)
  _tag_unpack_methods[15] = lambda reader: reader.read_object(Anki.Vector.Gateway.ObjectAccel.unpack_from)
  _tag_unpack_methods[16] = lambda reader: reader.read_object(Anki.Vector.Gateway.RobotObservedObject.unpack_from)
  _tag_unpack_methods[17] = lambda reader: reader.read_object(Anki.Vector.Gateway.ObjectAvailable.unpack_from)
  _tag_unpack_methods[18] = lambda reader: reader.read_object(Anki.Vector.Gateway.RobotDeletedFixedCustomObjects.unpack_from)
  _tag_unpack_methods[19] = lambda reader: reader.read_object(Anki.Vector.Gateway.RobotDeletedCustomMarkerObjects.unpack_from)
  _tag_unpack_methods[20] = lambda reader: reader.read_object(Anki.Vector.Gateway.CreatedFixedCustomObject.unpack_from)
  _tag_unpack_methods[21] = lambda reader: reader.read_object(Anki.Vector.Gateway.DefinedCustomObject.unpack_from)
  _tag_unpack_methods[22] = lambda reader: reader.read_object(Anki.Vector.Gateway.MemoryMapMessageBegin.unpack_from)
  _tag_unpack_methods[23] = lambda reader: reader.read_object(Anki.Vector.Gateway.MemoryMapMessage.unpack_from)
  _tag_unpack_methods[24] = lambda reader: reader.read_object(Anki.Vector.Gateway.MemoryMapMessageEnd.unpack_from)
  

  _tag_pack_methods = dict()
  _tag_pack_methods[0] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[1] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[2] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[5] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[6] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[7] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[10] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[11] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[12] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[13] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[14] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[15] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[16] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[17] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[18] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[19] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[20] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[21] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[22] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[23] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[24] = lambda writer, value: writer.write_object(value)
  

  _tag_size_methods = dict()
  _tag_size_methods[0] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[1] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[2] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[5] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[6] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[7] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[10] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[11] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[12] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[13] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[14] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[15] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[16] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[17] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[18] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[19] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[20] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[21] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[22] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[23] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[24] = lambda value: msgbuffers.size_object(value)
  

  _type_by_tag_value = dict()
  _type_by_tag_value[0] = lambda : Anki.Vector.Gateway.UiDeviceConnected
  _type_by_tag_value[1] = lambda : Anki.Vector.Gateway.RobotCompletedAction
  _type_by_tag_value[2] = lambda : Anki.Vector.Gateway.Event
  _type_by_tag_value[5] = lambda : Anki.Vector.Gateway.EnrolledNamesResponse
  _type_by_tag_value[6] = lambda : Anki.Vector.Gateway.RobotObservedFace
  _type_by_tag_value[7] = lambda : Anki.Vector.Gateway.RobotChangedObservedFaceID
  _type_by_tag_value[10] = lambda : Anki.Vector.Gateway.ObjectConnectionState
  _type_by_tag_value[11] = lambda : Anki.Vector.Gateway.ObjectMoved
  _type_by_tag_value[12] = lambda : Anki.Vector.Gateway.ObjectStoppedMoving
  _type_by_tag_value[13] = lambda : Anki.Vector.Gateway.ObjectUpAxisChanged
  _type_by_tag_value[14] = lambda : Anki.Vector.Gateway.ObjectTapped
  _type_by_tag_value[15] = lambda : Anki.Vector.Gateway.ObjectAccel
  _type_by_tag_value[16] = lambda : Anki.Vector.Gateway.RobotObservedObject
  _type_by_tag_value[17] = lambda : Anki.Vector.Gateway.ObjectAvailable
  _type_by_tag_value[18] = lambda : Anki.Vector.Gateway.RobotDeletedFixedCustomObjects
  _type_by_tag_value[19] = lambda : Anki.Vector.Gateway.RobotDeletedCustomMarkerObjects
  _type_by_tag_value[20] = lambda : Anki.Vector.Gateway.CreatedFixedCustomObject
  _type_by_tag_value[21] = lambda : Anki.Vector.Gateway.DefinedCustomObject
  _type_by_tag_value[22] = lambda : Anki.Vector.Gateway.MemoryMapMessageBegin
  _type_by_tag_value[23] = lambda : Anki.Vector.Gateway.MemoryMapMessage
  _type_by_tag_value[24] = lambda : Anki.Vector.Gateway.MemoryMapMessageEnd
  

Anki.Vector.Gateway.MessageRobotToExternal = MessageRobotToExternal
del MessageRobotToExternal


