"""
Autogenerated python message buffer code.
Source: clad/robotInterface/factoryMessages.clad
Full command line: victor-clad/tools/message-buffers/emitters/Python_emitter.py -C src -I clad/src lib/util/source/anki/clad robot/clad/src coretech/vision/clad_src coretech/common/clad_src -o generated/cladPython clad/robotInterface/factoryMessages.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.RobotInterface = msgbuffers.Namespace()

class FactoryTest(object):
  "Automatically-generated uint_8 enumeration."
  MIC_TEST             = 0
  SPEAKER_TEST         = 1
  TOUCH_SENSOR_INVALID = 2
  COUNT                = 3

Anki.Vector.RobotInterface.FactoryTest = FactoryTest
del FactoryTest


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

  __slots__ = (
    '_test', # Anki.Vector.RobotInterface.FactoryTest
    '_args', # uint_8[4]
  )

  @property
  def test(self):
    "Anki.Vector.RobotInterface.FactoryTest test struct property."
    return self._test

  @test.setter
  def test(self, value):
    self._test = msgbuffers.validate_integer(
      'RunFactoryTest.test', value, 0, 255)

  @property
  def args(self):
    "uint_8[4] args struct property."
    return self._args

  @args.setter
  def args(self, value):
    self._args = msgbuffers.validate_farray(
      'RunFactoryTest.args', value, 4,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 255))

  def __init__(self, test=Anki.Vector.RobotInterface.FactoryTest.MIC_TEST, args=(0,) * 4):
    self.test = test
    self.args = args

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

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RunFactoryTest from the given BinaryReader."
    _test = reader.read('B')
    _args = reader.read_farray('B', 4)
    return cls(_test, _args)

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

  def pack_to(self, writer):
    "Writes the current RunFactoryTest to the given BinaryWriter."
    writer.write(self._test, 'B')
    writer.write_farray(self._args, 'B', 4)

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

  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._test, 'B') +
      msgbuffers.size_farray(self._args, 'B', 4))

  def __str__(self):
    return '{type}(test={test}, args={args})'.format(
      type=type(self).__name__,
      test=self._test,
      args=msgbuffers.shorten_sequence(self._args))

  def __repr__(self):
    return '{type}(test={test}, args={args})'.format(
      type=type(self).__name__,
      test=repr(self._test),
      args=repr(self._args))

Anki.Vector.RobotInterface.RunFactoryTest = RunFactoryTest
del RunFactoryTest


