Exemplo n.º 1
0
 def __len__(self):
     return (msgbuffers.size(self._currentSpark, 'i') +
             msgbuffers.size(self._isCubeInLift, 'b') +
             msgbuffers.size(self._isRequestingGame, 'b') +
             msgbuffers.size(self._tallestStackHeight, 'B') +
             msgbuffers.size_object(self._needsLevels) +
             msgbuffers.size(self._currentActivity, 'B') +
             msgbuffers.size(self._currentReactionTrigger, 'B') +
             msgbuffers.size_object(self._userFacingBehaviorStageStruct))
Exemplo n.º 2
0
 def __len__(self):
     return (msgbuffers.size(self._timestamp, 'I') +
             msgbuffers.size(self._pose_frame_id, 'I') +
             msgbuffers.size(self._pose_origin_id, 'I') +
             msgbuffers.size_object(self._pose) +
             msgbuffers.size(self._lwheel_speed_mmps, 'f') +
             msgbuffers.size(self._rwheel_speed_mmps, 'f') +
             msgbuffers.size(self._headAngle, 'f') +
             msgbuffers.size(self._liftAngle, 'f') +
             msgbuffers.size_object(self._accel) +
             msgbuffers.size_object(self._gyro) +
             msgbuffers.size(self._batteryVoltage, 'f') +
             msgbuffers.size(self._status, 'I') +
             msgbuffers.size(self._lastPathID, 'H') +
             msgbuffers.size(self._cliffDataRaw, 'H') +
             msgbuffers.size(self._currPathSegment, 'b'))
Exemplo n.º 3
0
 def __len__(self):
     return (msgbuffers.size_object(self._frame))
class BehaviorManagerMessageUnion(object):
    "Generated message-passing union."

    __slots__ = ('_tag', '_data')

    class Tag(object):
        "The type indicator for this union."
        SetAvailableGames = 0  # Anki.Cozmo.ExternalInterface.SetAvailableGames
        ActivateSpark = 1  # Anki.Cozmo.ExternalInterface.ActivateSpark
        SparkUnlocked = 2  # Anki.Cozmo.ExternalInterface.SparkUnlocked

    @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 SetAvailableGames(self):
        "Anki.Cozmo.ExternalInterface.SetAvailableGames SetAvailableGames union property."
        msgbuffers.safety_check_tag('SetAvailableGames', self._tag,
                                    self.Tag.SetAvailableGames,
                                    self._tags_by_value)
        return self._data

    @SetAvailableGames.setter
    def SetAvailableGames(self, value):
        self._data = msgbuffers.validate_object(
            'BehaviorManagerMessageUnion.SetAvailableGames', value,
            Anki.Cozmo.ExternalInterface.SetAvailableGames)
        self._tag = self.Tag.SetAvailableGames

    @property
    def ActivateSpark(self):
        "Anki.Cozmo.ExternalInterface.ActivateSpark ActivateSpark union property."
        msgbuffers.safety_check_tag('ActivateSpark', self._tag,
                                    self.Tag.ActivateSpark,
                                    self._tags_by_value)
        return self._data

    @ActivateSpark.setter
    def ActivateSpark(self, value):
        self._data = msgbuffers.validate_object(
            'BehaviorManagerMessageUnion.ActivateSpark', value,
            Anki.Cozmo.ExternalInterface.ActivateSpark)
        self._tag = self.Tag.ActivateSpark

    @property
    def SparkUnlocked(self):
        "Anki.Cozmo.ExternalInterface.SparkUnlocked SparkUnlocked union property."
        msgbuffers.safety_check_tag('SparkUnlocked', self._tag,
                                    self.Tag.SparkUnlocked,
                                    self._tags_by_value)
        return self._data

    @SparkUnlocked.setter
    def SparkUnlocked(self, value):
        self._data = msgbuffers.validate_object(
            'BehaviorManagerMessageUnion.SparkUnlocked', value,
            Anki.Cozmo.ExternalInterface.SparkUnlocked)
        self._tag = self.Tag.SparkUnlocked

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

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

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

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

    def __str__(self):
        if 0 <= self._tag < 3:
            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 < 3:
            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(
        SetAvailableGames=0,
        ActivateSpark=1,
        SparkUnlocked=2,
    )

    _tags_by_value = dict()
    _tags_by_value[0] = 'SetAvailableGames'
    _tags_by_value[1] = 'ActivateSpark'
    _tags_by_value[2] = 'SparkUnlocked'

    _tag_unpack_methods = dict()
    _tag_unpack_methods[0] = lambda reader: reader.read_object(
        Anki.Cozmo.ExternalInterface.SetAvailableGames.unpack_from)
    _tag_unpack_methods[1] = lambda reader: reader.read_object(
        Anki.Cozmo.ExternalInterface.ActivateSpark.unpack_from)
    _tag_unpack_methods[2] = lambda reader: reader.read_object(
        Anki.Cozmo.ExternalInterface.SparkUnlocked.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_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)

    _type_by_tag_value = dict()
    _type_by_tag_value[
        0] = lambda: Anki.Cozmo.ExternalInterface.SetAvailableGames
    _type_by_tag_value[1] = lambda: Anki.Cozmo.ExternalInterface.ActivateSpark
    _type_by_tag_value[2] = lambda: Anki.Cozmo.ExternalInterface.SparkUnlocked
Exemplo n.º 5
0
class MessageSimPhysics(object):
    "Generated message-passing union."

    __slots__ = ('_tag', '_data')

    class Tag(object):
        "The type indicator for this union."
        ApplyForce = 0  # Anki.Cozmo.PhysicsInterface.ApplyForce

    @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 ApplyForce(self):
        "Anki.Cozmo.PhysicsInterface.ApplyForce ApplyForce union property."
        msgbuffers.safety_check_tag('ApplyForce', self._tag,
                                    self.Tag.ApplyForce, self._tags_by_value)
        return self._data

    @ApplyForce.setter
    def ApplyForce(self, value):
        self._data = msgbuffers.validate_object(
            'MessageSimPhysics.ApplyForce', value,
            Anki.Cozmo.PhysicsInterface.ApplyForce)
        self._tag = self.Tag.ApplyForce

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

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

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

    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(ApplyForce=0, )

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

    _tag_unpack_methods = dict()
    _tag_unpack_methods[0] = lambda reader: reader.read_object(
        Anki.Cozmo.PhysicsInterface.ApplyForce.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.Cozmo.PhysicsInterface.ApplyForce
Exemplo n.º 6
0
 def __len__(self):
     return (msgbuffers.size(self._timestamp, 'I') +
             msgbuffers.size(self._objectID, 'I') +
             msgbuffers.size_object(self._accel) +
             msgbuffers.size(self._axisOfAccel, 'B'))
Exemplo n.º 7
0
 def __len__(self):
     return (msgbuffers.size(self._callbackId, 'H') +
             msgbuffers.size_object(self._callbackInfo))
Exemplo n.º 8
0
class ActionCompletedUnion(object):
    "Generated message-passing union."

    __slots__ = ('_tag', '_data')

    class Tag(object):
        "The type indicator for this union."
        objectInteractionCompleted = 0  # Anki.Cozmo.ObjectInteractionCompleted
        animationCompleted = 1  # Anki.Cozmo.AnimationCompleted
        deviceAudioCompleted = 2  # Anki.Cozmo.DeviceAudioCompleted
        trackFaceCompleted = 3  # Anki.Cozmo.TrackFaceCompleted
        readToolCodeCompleted = 4  # Anki.Cozmo.ReadToolCodeCompleted
        turnInPlaceCompleted = 5  # Anki.Cozmo.TurnInPlaceCompleted
        defaultCompleted = 6  # Anki.Cozmo.DefaultCompleted

    @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 objectInteractionCompleted(self):
        "Anki.Cozmo.ObjectInteractionCompleted objectInteractionCompleted union property."
        msgbuffers.safety_check_tag('objectInteractionCompleted', self._tag,
                                    self.Tag.objectInteractionCompleted,
                                    self._tags_by_value)
        return self._data

    @objectInteractionCompleted.setter
    def objectInteractionCompleted(self, value):
        self._data = msgbuffers.validate_object(
            'ActionCompletedUnion.objectInteractionCompleted', value,
            Anki.Cozmo.ObjectInteractionCompleted)
        self._tag = self.Tag.objectInteractionCompleted

    @property
    def animationCompleted(self):
        "Anki.Cozmo.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.Cozmo.AnimationCompleted)
        self._tag = self.Tag.animationCompleted

    @property
    def deviceAudioCompleted(self):
        "Anki.Cozmo.DeviceAudioCompleted deviceAudioCompleted union property."
        msgbuffers.safety_check_tag('deviceAudioCompleted', self._tag,
                                    self.Tag.deviceAudioCompleted,
                                    self._tags_by_value)
        return self._data

    @deviceAudioCompleted.setter
    def deviceAudioCompleted(self, value):
        self._data = msgbuffers.validate_object(
            'ActionCompletedUnion.deviceAudioCompleted', value,
            Anki.Cozmo.DeviceAudioCompleted)
        self._tag = self.Tag.deviceAudioCompleted

    @property
    def trackFaceCompleted(self):
        "Anki.Cozmo.TrackFaceCompleted trackFaceCompleted union property."
        msgbuffers.safety_check_tag('trackFaceCompleted', self._tag,
                                    self.Tag.trackFaceCompleted,
                                    self._tags_by_value)
        return self._data

    @trackFaceCompleted.setter
    def trackFaceCompleted(self, value):
        self._data = msgbuffers.validate_object(
            'ActionCompletedUnion.trackFaceCompleted', value,
            Anki.Cozmo.TrackFaceCompleted)
        self._tag = self.Tag.trackFaceCompleted

    @property
    def readToolCodeCompleted(self):
        "Anki.Cozmo.ReadToolCodeCompleted readToolCodeCompleted union property."
        msgbuffers.safety_check_tag('readToolCodeCompleted', self._tag,
                                    self.Tag.readToolCodeCompleted,
                                    self._tags_by_value)
        return self._data

    @readToolCodeCompleted.setter
    def readToolCodeCompleted(self, value):
        self._data = msgbuffers.validate_object(
            'ActionCompletedUnion.readToolCodeCompleted', value,
            Anki.Cozmo.ReadToolCodeCompleted)
        self._tag = self.Tag.readToolCodeCompleted

    @property
    def turnInPlaceCompleted(self):
        "Anki.Cozmo.TurnInPlaceCompleted turnInPlaceCompleted union property."
        msgbuffers.safety_check_tag('turnInPlaceCompleted', self._tag,
                                    self.Tag.turnInPlaceCompleted,
                                    self._tags_by_value)
        return self._data

    @turnInPlaceCompleted.setter
    def turnInPlaceCompleted(self, value):
        self._data = msgbuffers.validate_object(
            'ActionCompletedUnion.turnInPlaceCompleted', value,
            Anki.Cozmo.TurnInPlaceCompleted)
        self._tag = self.Tag.turnInPlaceCompleted

    @property
    def defaultCompleted(self):
        "Anki.Cozmo.DefaultCompleted defaultCompleted union property."
        msgbuffers.safety_check_tag('defaultCompleted', self._tag,
                                    self.Tag.defaultCompleted,
                                    self._tags_by_value)
        return self._data

    @defaultCompleted.setter
    def defaultCompleted(self, value):
        self._data = msgbuffers.validate_object(
            'ActionCompletedUnion.defaultCompleted', value,
            Anki.Cozmo.DefaultCompleted)
        self._tag = self.Tag.defaultCompleted

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

    def __str__(self):
        if 0 <= self._tag < 7:
            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 < 7:
            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(
        objectInteractionCompleted=0,
        animationCompleted=1,
        deviceAudioCompleted=2,
        trackFaceCompleted=3,
        readToolCodeCompleted=4,
        turnInPlaceCompleted=5,
        defaultCompleted=6,
    )

    _tags_by_value = dict()
    _tags_by_value[0] = 'objectInteractionCompleted'
    _tags_by_value[1] = 'animationCompleted'
    _tags_by_value[2] = 'deviceAudioCompleted'
    _tags_by_value[3] = 'trackFaceCompleted'
    _tags_by_value[4] = 'readToolCodeCompleted'
    _tags_by_value[5] = 'turnInPlaceCompleted'
    _tags_by_value[6] = 'defaultCompleted'

    _tag_unpack_methods = dict()
    _tag_unpack_methods[0] = lambda reader: reader.read_object(
        Anki.Cozmo.ObjectInteractionCompleted.unpack_from)
    _tag_unpack_methods[1] = lambda reader: reader.read_object(
        Anki.Cozmo.AnimationCompleted.unpack_from)
    _tag_unpack_methods[2] = lambda reader: reader.read_object(
        Anki.Cozmo.DeviceAudioCompleted.unpack_from)
    _tag_unpack_methods[3] = lambda reader: reader.read_object(
        Anki.Cozmo.TrackFaceCompleted.unpack_from)
    _tag_unpack_methods[4] = lambda reader: reader.read_object(
        Anki.Cozmo.ReadToolCodeCompleted.unpack_from)
    _tag_unpack_methods[5] = lambda reader: reader.read_object(
        Anki.Cozmo.TurnInPlaceCompleted.unpack_from)
    _tag_unpack_methods[6] = lambda reader: reader.read_object(
        Anki.Cozmo.DefaultCompleted.unpack_from)

    _tag_pack_methods = dict()
    _tag_pack_methods[0] = lambda writer, value: writer.write_object(value)
    _tag_pack_methods[1] = lambda writer, value: writer.write_object(value)
    _tag_pack_methods[2] = lambda writer, value: writer.write_object(value)
    _tag_pack_methods[3] = lambda writer, value: writer.write_object(value)
    _tag_pack_methods[4] = lambda writer, value: writer.write_object(value)
    _tag_pack_methods[5] = lambda writer, value: writer.write_object(value)
    _tag_pack_methods[6] = lambda writer, value: writer.write_object(value)

    _tag_size_methods = dict()
    _tag_size_methods[0] = lambda value: msgbuffers.size_object(value)
    _tag_size_methods[1] = lambda value: msgbuffers.size_object(value)
    _tag_size_methods[2] = lambda value: msgbuffers.size_object(value)
    _tag_size_methods[3] = lambda value: msgbuffers.size_object(value)
    _tag_size_methods[4] = lambda value: msgbuffers.size_object(value)
    _tag_size_methods[5] = lambda value: msgbuffers.size_object(value)
    _tag_size_methods[6] = lambda value: msgbuffers.size_object(value)

    _type_by_tag_value = dict()
    _type_by_tag_value[0] = lambda: Anki.Cozmo.ObjectInteractionCompleted
    _type_by_tag_value[1] = lambda: Anki.Cozmo.AnimationCompleted
    _type_by_tag_value[2] = lambda: Anki.Cozmo.DeviceAudioCompleted
    _type_by_tag_value[3] = lambda: Anki.Cozmo.TrackFaceCompleted
    _type_by_tag_value[4] = lambda: Anki.Cozmo.ReadToolCodeCompleted
    _type_by_tag_value[5] = lambda: Anki.Cozmo.TurnInPlaceCompleted
    _type_by_tag_value[6] = lambda: Anki.Cozmo.DefaultCompleted
Exemplo n.º 9
0
 def __len__(self):
     return (msgbuffers.size_object(self._info))
Exemplo n.º 10
0
class MessageAudioClient(object):
    "Generated message-passing union."

    __slots__ = ('_tag', '_data')

    class Tag(object):
        "The type indicator for this union."
        PostAudioEvent = 0  # Anki.AudioEngine.Multiplexer.PostAudioEvent
        StopAllAudioEvents = 1  # Anki.AudioEngine.Multiplexer.StopAllAudioEvents
        PostAudioGameState = 2  # Anki.AudioEngine.Multiplexer.PostAudioGameState
        PostAudioSwitchState = 3  # Anki.AudioEngine.Multiplexer.PostAudioSwitchState
        PostAudioParameter = 4  # Anki.AudioEngine.Multiplexer.PostAudioParameter
        PostAudioMusicState = 5  # Anki.AudioEngine.Multiplexer.PostAudioMusicState
        AudioCallback = 6  # Anki.AudioEngine.Multiplexer.AudioCallback

    @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 PostAudioEvent(self):
        "Anki.AudioEngine.Multiplexer.PostAudioEvent PostAudioEvent union property."
        msgbuffers.safety_check_tag('PostAudioEvent', self._tag,
                                    self.Tag.PostAudioEvent,
                                    self._tags_by_value)
        return self._data

    @PostAudioEvent.setter
    def PostAudioEvent(self, value):
        self._data = msgbuffers.validate_object(
            'MessageAudioClient.PostAudioEvent', value,
            Anki.AudioEngine.Multiplexer.PostAudioEvent)
        self._tag = self.Tag.PostAudioEvent

    @property
    def StopAllAudioEvents(self):
        "Anki.AudioEngine.Multiplexer.StopAllAudioEvents StopAllAudioEvents union property."
        msgbuffers.safety_check_tag('StopAllAudioEvents', self._tag,
                                    self.Tag.StopAllAudioEvents,
                                    self._tags_by_value)
        return self._data

    @StopAllAudioEvents.setter
    def StopAllAudioEvents(self, value):
        self._data = msgbuffers.validate_object(
            'MessageAudioClient.StopAllAudioEvents', value,
            Anki.AudioEngine.Multiplexer.StopAllAudioEvents)
        self._tag = self.Tag.StopAllAudioEvents

    @property
    def PostAudioGameState(self):
        "Anki.AudioEngine.Multiplexer.PostAudioGameState PostAudioGameState union property."
        msgbuffers.safety_check_tag('PostAudioGameState', self._tag,
                                    self.Tag.PostAudioGameState,
                                    self._tags_by_value)
        return self._data

    @PostAudioGameState.setter
    def PostAudioGameState(self, value):
        self._data = msgbuffers.validate_object(
            'MessageAudioClient.PostAudioGameState', value,
            Anki.AudioEngine.Multiplexer.PostAudioGameState)
        self._tag = self.Tag.PostAudioGameState

    @property
    def PostAudioSwitchState(self):
        "Anki.AudioEngine.Multiplexer.PostAudioSwitchState PostAudioSwitchState union property."
        msgbuffers.safety_check_tag('PostAudioSwitchState', self._tag,
                                    self.Tag.PostAudioSwitchState,
                                    self._tags_by_value)
        return self._data

    @PostAudioSwitchState.setter
    def PostAudioSwitchState(self, value):
        self._data = msgbuffers.validate_object(
            'MessageAudioClient.PostAudioSwitchState', value,
            Anki.AudioEngine.Multiplexer.PostAudioSwitchState)
        self._tag = self.Tag.PostAudioSwitchState

    @property
    def PostAudioParameter(self):
        "Anki.AudioEngine.Multiplexer.PostAudioParameter PostAudioParameter union property."
        msgbuffers.safety_check_tag('PostAudioParameter', self._tag,
                                    self.Tag.PostAudioParameter,
                                    self._tags_by_value)
        return self._data

    @PostAudioParameter.setter
    def PostAudioParameter(self, value):
        self._data = msgbuffers.validate_object(
            'MessageAudioClient.PostAudioParameter', value,
            Anki.AudioEngine.Multiplexer.PostAudioParameter)
        self._tag = self.Tag.PostAudioParameter

    @property
    def PostAudioMusicState(self):
        "Anki.AudioEngine.Multiplexer.PostAudioMusicState PostAudioMusicState union property."
        msgbuffers.safety_check_tag('PostAudioMusicState', self._tag,
                                    self.Tag.PostAudioMusicState,
                                    self._tags_by_value)
        return self._data

    @PostAudioMusicState.setter
    def PostAudioMusicState(self, value):
        self._data = msgbuffers.validate_object(
            'MessageAudioClient.PostAudioMusicState', value,
            Anki.AudioEngine.Multiplexer.PostAudioMusicState)
        self._tag = self.Tag.PostAudioMusicState

    @property
    def AudioCallback(self):
        "Anki.AudioEngine.Multiplexer.AudioCallback AudioCallback union property."
        msgbuffers.safety_check_tag('AudioCallback', self._tag,
                                    self.Tag.AudioCallback,
                                    self._tags_by_value)
        return self._data

    @AudioCallback.setter
    def AudioCallback(self, value):
        self._data = msgbuffers.validate_object(
            'MessageAudioClient.AudioCallback', value,
            Anki.AudioEngine.Multiplexer.AudioCallback)
        self._tag = self.Tag.AudioCallback

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

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

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

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

    def __str__(self):
        if 0 <= self._tag < 7:
            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 < 7:
            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(
        PostAudioEvent=0,
        StopAllAudioEvents=1,
        PostAudioGameState=2,
        PostAudioSwitchState=3,
        PostAudioParameter=4,
        PostAudioMusicState=5,
        AudioCallback=6,
    )

    _tags_by_value = dict()
    _tags_by_value[0] = 'PostAudioEvent'
    _tags_by_value[1] = 'StopAllAudioEvents'
    _tags_by_value[2] = 'PostAudioGameState'
    _tags_by_value[3] = 'PostAudioSwitchState'
    _tags_by_value[4] = 'PostAudioParameter'
    _tags_by_value[5] = 'PostAudioMusicState'
    _tags_by_value[6] = 'AudioCallback'

    _tag_unpack_methods = dict()
    _tag_unpack_methods[0] = lambda reader: reader.read_object(
        Anki.AudioEngine.Multiplexer.PostAudioEvent.unpack_from)
    _tag_unpack_methods[1] = lambda reader: reader.read_object(
        Anki.AudioEngine.Multiplexer.StopAllAudioEvents.unpack_from)
    _tag_unpack_methods[2] = lambda reader: reader.read_object(
        Anki.AudioEngine.Multiplexer.PostAudioGameState.unpack_from)
    _tag_unpack_methods[3] = lambda reader: reader.read_object(
        Anki.AudioEngine.Multiplexer.PostAudioSwitchState.unpack_from)
    _tag_unpack_methods[4] = lambda reader: reader.read_object(
        Anki.AudioEngine.Multiplexer.PostAudioParameter.unpack_from)
    _tag_unpack_methods[5] = lambda reader: reader.read_object(
        Anki.AudioEngine.Multiplexer.PostAudioMusicState.unpack_from)
    _tag_unpack_methods[6] = lambda reader: reader.read_object(
        Anki.AudioEngine.Multiplexer.AudioCallback.unpack_from)

    _tag_pack_methods = dict()
    _tag_pack_methods[0] = lambda writer, value: writer.write_object(value)
    _tag_pack_methods[1] = lambda writer, value: writer.write_object(value)
    _tag_pack_methods[2] = lambda writer, value: writer.write_object(value)
    _tag_pack_methods[3] = lambda writer, value: writer.write_object(value)
    _tag_pack_methods[4] = lambda writer, value: writer.write_object(value)
    _tag_pack_methods[5] = lambda writer, value: writer.write_object(value)
    _tag_pack_methods[6] = lambda writer, value: writer.write_object(value)

    _tag_size_methods = dict()
    _tag_size_methods[0] = lambda value: msgbuffers.size_object(value)
    _tag_size_methods[1] = lambda value: msgbuffers.size_object(value)
    _tag_size_methods[2] = lambda value: msgbuffers.size_object(value)
    _tag_size_methods[3] = lambda value: msgbuffers.size_object(value)
    _tag_size_methods[4] = lambda value: msgbuffers.size_object(value)
    _tag_size_methods[5] = lambda value: msgbuffers.size_object(value)
    _tag_size_methods[6] = lambda value: msgbuffers.size_object(value)

    _type_by_tag_value = dict()
    _type_by_tag_value[0] = lambda: Anki.AudioEngine.Multiplexer.PostAudioEvent
    _type_by_tag_value[
        1] = lambda: Anki.AudioEngine.Multiplexer.StopAllAudioEvents
    _type_by_tag_value[
        2] = lambda: Anki.AudioEngine.Multiplexer.PostAudioGameState
    _type_by_tag_value[
        3] = lambda: Anki.AudioEngine.Multiplexer.PostAudioSwitchState
    _type_by_tag_value[
        4] = lambda: Anki.AudioEngine.Multiplexer.PostAudioParameter
    _type_by_tag_value[
        5] = lambda: Anki.AudioEngine.Multiplexer.PostAudioMusicState
    _type_by_tag_value[6] = lambda: Anki.AudioEngine.Multiplexer.AudioCallback
 def __len__(self):
     return (msgbuffers.size(self._currentSpark, 'i') +
             msgbuffers.size(self._isCubeInLift, 'b') +
             msgbuffers.size(self._currentActivity, 'B') +
             msgbuffers.size(self._currentReactionTrigger, 'B') +
             msgbuffers.size_object(self._userFacingBehaviorStageStruct))
 def __len__(self):
   return (msgbuffers.size_object(self._voiceCommandEvent))
class VoiceCommandEventUnion(object):
  "Generated message-passing union."

  __slots__ = ('_tag', '_data')

  class Tag(object):
    "The type indicator for this union."
    commandHeardEvent        = 0 # Anki.Cozmo.VoiceCommand.CommandHeardEvent
    respondingToCommandStart = 1 # Anki.Cozmo.VoiceCommand.RespondingToCommandStart
    respondingToCommandEnd   = 2 # Anki.Cozmo.VoiceCommand.RespondingToCommandEnd
    stateData                = 3 # Anki.Cozmo.VoiceCommand.StateData
    requestStatusUpdate      = 4 # Anki.Cozmo.VoiceCommand.RequestStatusUpdate
    changeEnabledStatus      = 5 # Anki.Cozmo.VoiceCommand.ChangeEnabledStatus

  @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 commandHeardEvent(self):
    "Anki.Cozmo.VoiceCommand.CommandHeardEvent commandHeardEvent union property."
    msgbuffers.safety_check_tag('commandHeardEvent', self._tag, self.Tag.commandHeardEvent, self._tags_by_value)
    return self._data

  @commandHeardEvent.setter
  def commandHeardEvent(self, value):
    self._data = msgbuffers.validate_object(
      'VoiceCommandEventUnion.commandHeardEvent', value, Anki.Cozmo.VoiceCommand.CommandHeardEvent)
    self._tag = self.Tag.commandHeardEvent

  @property
  def respondingToCommandStart(self):
    "Anki.Cozmo.VoiceCommand.RespondingToCommandStart respondingToCommandStart union property."
    msgbuffers.safety_check_tag('respondingToCommandStart', self._tag, self.Tag.respondingToCommandStart, self._tags_by_value)
    return self._data

  @respondingToCommandStart.setter
  def respondingToCommandStart(self, value):
    self._data = msgbuffers.validate_object(
      'VoiceCommandEventUnion.respondingToCommandStart', value, Anki.Cozmo.VoiceCommand.RespondingToCommandStart)
    self._tag = self.Tag.respondingToCommandStart

  @property
  def respondingToCommandEnd(self):
    "Anki.Cozmo.VoiceCommand.RespondingToCommandEnd respondingToCommandEnd union property."
    msgbuffers.safety_check_tag('respondingToCommandEnd', self._tag, self.Tag.respondingToCommandEnd, self._tags_by_value)
    return self._data

  @respondingToCommandEnd.setter
  def respondingToCommandEnd(self, value):
    self._data = msgbuffers.validate_object(
      'VoiceCommandEventUnion.respondingToCommandEnd', value, Anki.Cozmo.VoiceCommand.RespondingToCommandEnd)
    self._tag = self.Tag.respondingToCommandEnd

  @property
  def stateData(self):
    "Anki.Cozmo.VoiceCommand.StateData stateData union property."
    msgbuffers.safety_check_tag('stateData', self._tag, self.Tag.stateData, self._tags_by_value)
    return self._data

  @stateData.setter
  def stateData(self, value):
    self._data = msgbuffers.validate_object(
      'VoiceCommandEventUnion.stateData', value, Anki.Cozmo.VoiceCommand.StateData)
    self._tag = self.Tag.stateData

  @property
  def requestStatusUpdate(self):
    "Anki.Cozmo.VoiceCommand.RequestStatusUpdate requestStatusUpdate union property."
    msgbuffers.safety_check_tag('requestStatusUpdate', self._tag, self.Tag.requestStatusUpdate, self._tags_by_value)
    return self._data

  @requestStatusUpdate.setter
  def requestStatusUpdate(self, value):
    self._data = msgbuffers.validate_object(
      'VoiceCommandEventUnion.requestStatusUpdate', value, Anki.Cozmo.VoiceCommand.RequestStatusUpdate)
    self._tag = self.Tag.requestStatusUpdate

  @property
  def changeEnabledStatus(self):
    "Anki.Cozmo.VoiceCommand.ChangeEnabledStatus changeEnabledStatus union property."
    msgbuffers.safety_check_tag('changeEnabledStatus', self._tag, self.Tag.changeEnabledStatus, self._tags_by_value)
    return self._data

  @changeEnabledStatus.setter
  def changeEnabledStatus(self, value):
    self._data = msgbuffers.validate_object(
      'VoiceCommandEventUnion.changeEnabledStatus', value, Anki.Cozmo.VoiceCommand.ChangeEnabledStatus)
    self._tag = self.Tag.changeEnabledStatus

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

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

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

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

  def __str__(self):
    if 0 <= self._tag < 6:
      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 < 6:
      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(
    commandHeardEvent=0,
    respondingToCommandStart=1,
    respondingToCommandEnd=2,
    stateData=3,
    requestStatusUpdate=4,
    changeEnabledStatus=5,
  )

  _tags_by_value = dict()
  _tags_by_value[0] = 'commandHeardEvent'
  _tags_by_value[1] = 'respondingToCommandStart'
  _tags_by_value[2] = 'respondingToCommandEnd'
  _tags_by_value[3] = 'stateData'
  _tags_by_value[4] = 'requestStatusUpdate'
  _tags_by_value[5] = 'changeEnabledStatus'
  

  _tag_unpack_methods = dict()
  _tag_unpack_methods[0] = lambda reader: reader.read_object(Anki.Cozmo.VoiceCommand.CommandHeardEvent.unpack_from)
  _tag_unpack_methods[1] = lambda reader: reader.read_object(Anki.Cozmo.VoiceCommand.RespondingToCommandStart.unpack_from)
  _tag_unpack_methods[2] = lambda reader: reader.read_object(Anki.Cozmo.VoiceCommand.RespondingToCommandEnd.unpack_from)
  _tag_unpack_methods[3] = lambda reader: reader.read_object(Anki.Cozmo.VoiceCommand.StateData.unpack_from)
  _tag_unpack_methods[4] = lambda reader: reader.read_object(Anki.Cozmo.VoiceCommand.RequestStatusUpdate.unpack_from)
  _tag_unpack_methods[5] = lambda reader: reader.read_object(Anki.Cozmo.VoiceCommand.ChangeEnabledStatus.unpack_from)
  

  _tag_pack_methods = dict()
  _tag_pack_methods[0] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[1] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[2] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[3] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[4] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[5] = lambda writer, value: writer.write_object(value)
  

  _tag_size_methods = dict()
  _tag_size_methods[0] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[1] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[2] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[3] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[4] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[5] = lambda value: msgbuffers.size_object(value)
  

  _type_by_tag_value = dict()
  _type_by_tag_value[0] = lambda : Anki.Cozmo.VoiceCommand.CommandHeardEvent
  _type_by_tag_value[1] = lambda : Anki.Cozmo.VoiceCommand.RespondingToCommandStart
  _type_by_tag_value[2] = lambda : Anki.Cozmo.VoiceCommand.RespondingToCommandEnd
  _type_by_tag_value[3] = lambda : Anki.Cozmo.VoiceCommand.StateData
  _type_by_tag_value[4] = lambda : Anki.Cozmo.VoiceCommand.RequestStatusUpdate
  _type_by_tag_value[5] = lambda : Anki.Cozmo.VoiceCommand.ChangeEnabledStatus
Exemplo n.º 14
0
 def __len__(self):
   return (msgbuffers.size_object(self._meta) +
     msgbuffers.size_object_varray(self._experiments, 'B'))