Module redvox.api1000.wrapped_redvox_packet.timing_information

Contains methods for accessing and setting timing and time synchronization fields.

Expand source code
"""
Contains methods for accessing and setting timing and time synchronization fields.
"""

import enum
from typing import List, Union

import redvox.api1000.common.typing
import redvox.api1000.proto.redvox_api_m_pb2 as redvox_api_m_pb2
import redvox.api1000.common.common as common
import redvox.api1000.common.generic

from redvox.api1000.common.decorators import wrap_enum

_SYNCH_EXCHANGES_FIELD_NAME: str = "synch_exchanges"
SynchExchangeProto = redvox_api_m_pb2.RedvoxPacketM.TimingInformation.SynchExchange


class SynchExchange(
    redvox.api1000.common.generic.ProtoBase[
        redvox_api_m_pb2.RedvoxPacketM.TimingInformation.SynchExchange
    ]
):
    """
    Encapsulates a single complete exchange of the RedVox custom synch exchange algorithm.
    """

    def __init__(
        self, proto: redvox_api_m_pb2.RedvoxPacketM.TimingInformation.SynchExchange
    ):
        super().__init__(proto)

    @staticmethod
    def new() -> "SynchExchange":
        """
        :return: A new, empty SynchExchange instance
        """
        exchange = SynchExchange(
            redvox_api_m_pb2.RedvoxPacketM.TimingInformation.SynchExchange()
        )
        exchange.set_unit(common.Unit.MICROSECONDS_SINCE_UNIX_EPOCH)
        return exchange

    def get_unit(self) -> common.Unit:
        """
        Returns the unit for exchange values.
        :return: The unit for exchange values.
        """
        # noinspection Mypy
        # pylint: disable=E1101
        return common.Unit.from_proto(self._proto.unit)

    def set_default_unit(self) -> "SynchExchange":
        """
        Sets the default unit for this type.
        :return: A modified instance of self
        """
        return self.set_unit(common.Unit.MICROSECONDS_SINCE_UNIX_EPOCH)

    def set_unit(self, unit: Union[common.Unit, int]) -> "SynchExchange":
        """
        Sets the unit for this exchange type
        :param unit: Unit to set
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(unit, [common.Unit])
        # noinspection Mypy
        self._proto.unit = unit.into_proto()
        return self

    def get_a1(self) -> float:
        """
        :return: The A1 value of the exchange.
        """
        return self._proto.a1

    # pylint: disable=C0103
    def set_a1(self, a1: float) -> "SynchExchange":
        """
        Sets the A1 value of this exchange
        :param a1: Value to set
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(a1, [int, float])
        self._proto.a1 = a1
        return self

    def get_a2(self) -> float:
        """
        :return: The A2 value of the exchange.
        """
        return self._proto.a2

    # pylint: disable=C0103
    def set_a2(self, a2: float) -> "SynchExchange":
        """
        Sets the A2 value of this exchange
        :param a2: Value to set
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(a2, [int, float])
        self._proto.a2 = a2
        return self

    def get_a3(self) -> float:
        """
        :return: The A3 value of the exchange.
        """
        return self._proto.a3

    # pylint: disable=C0103
    def set_a3(self, a3: float) -> "SynchExchange":
        """
        Sets the A3 value of this exchange
        :param a3: Value to set
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(a3, [int, float])
        self._proto.a3 = a3
        return self

    def get_b1(self) -> float:
        """
        :return: The B1 value of the exchange.
        """
        return self._proto.b1

    # pylint: disable=C0103
    def set_b1(self, b1: float) -> "SynchExchange":
        """
        Sets the B1 value of this exchange
        :param b1: Value to set
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(b1, [int, float])
        self._proto.b1 = b1
        return self

    def get_b2(self) -> float:
        """
        :return: The B2 value of the exchange.
        """
        return self._proto.b2

    # pylint: disable=C0103
    def set_b2(self, b2: float) -> "SynchExchange":
        """
        Sets the B2 value of this exchange
        :param b2: Value to set
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(b2, [int, float])
        self._proto.b2 = b2
        return self

    def get_b3(self) -> float:
        """
        :return: The B3 value of the exchange.
        """
        return self._proto.b3

    # pylint: disable=C0103
    def set_b3(self, b3: float) -> "SynchExchange":
        """
        Sets the B3 value of this exchange
        :param b3: Value to set
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(b3, [int, float])
        self._proto.b3 = b3
        return self


def validate_synch_exchange(synch_exchange: SynchExchange) -> List[str]:
    """
    Validates a synch exchange.
    :param synch_exchange: Exchange to validate.
    :return: A list of validation errors.
    """
    errors_list = []
    # assume 0 (default) is an invalid value
    if synch_exchange.get_a1() == 0:
        errors_list.append("Sync exchange a1 value is 0")
    if synch_exchange.get_a2() == 0:
        errors_list.append("Sync exchange a2 value is 0")
    if synch_exchange.get_a3() == 0:
        errors_list.append("Sync exchange a3 value is 0")
    if synch_exchange.get_a1() >= synch_exchange.get_a2():
        errors_list.append("Sync exchange a1 is greater than or equal to a2")
    if synch_exchange.get_a2() > synch_exchange.get_a3():
        errors_list.append("Sync exchange a2 is greater than a3")
    if synch_exchange.get_b1() == 0:
        errors_list.append("Sync exchange b1 value is 0")
    if synch_exchange.get_b2() == 0:
        errors_list.append("Sync exchange b2 value is 0")
    if synch_exchange.get_b3() == 0:
        errors_list.append("Sync exchange b3 value is 0")
    if synch_exchange.get_b1() > synch_exchange.get_b2():
        errors_list.append("Sync exchange b1 value is greater than b2")
    if synch_exchange.get_b2() >= synch_exchange.get_b3():
        errors_list.append("Sync exchange b2 value is greater than or equal to b3")
    if synch_exchange.get_unit() != common.Unit.MICROSECONDS_SINCE_UNIX_EPOCH:
        errors_list.append("Sync exchange unit is not microseconds since unix epoch")
    return errors_list


# noinspection Mypy
@wrap_enum(redvox_api_m_pb2.RedvoxPacketM.TimingInformation.TimingScoreMethod)
class TimingScoreMethod(enum.Enum):
    """
    Method used to score the timing.
    """

    UNKNOWN: int = 0


class TimingInformation(
    redvox.api1000.common.generic.ProtoBase[
        redvox_api_m_pb2.RedvoxPacketM.TimingInformation
    ]
):
    """
    Collection of timing information for this packet.
    """

    def __init__(self, proto: redvox_api_m_pb2.RedvoxPacketM.TimingInformation):
        super().__init__(proto)
        self._synch_exchanges: redvox.api1000.common.generic.ProtoRepeatedMessage[
            SynchExchangeProto, SynchExchange
        ] = redvox.api1000.common.generic.ProtoRepeatedMessage(
            proto,
            proto.synch_exchanges,
            _SYNCH_EXCHANGES_FIELD_NAME,
            SynchExchange,
            lambda exchange: exchange.get_proto(),
        )

    @staticmethod
    def new() -> "TimingInformation":
        """
        :return: A new, empty TimingInformation instance
        """
        return TimingInformation(redvox_api_m_pb2.RedvoxPacketM.TimingInformation())

    def get_unit(self) -> common.Unit:
        """
        :return: Unit used for this timing information.
        """
        # noinspection Mypy
        # pylint: disable=E1101
        return common.Unit.from_proto(self._proto.unit)

    def set_default_unit(self) -> "TimingInformation":
        """
        Sets the default time unit.
        :return: A modified instance of self
        """
        return self.set_unit(common.Unit.MICROSECONDS_SINCE_UNIX_EPOCH)

    def set_unit(self, unit: Union[common.Unit, int]) -> "TimingInformation":
        """
        Sets a unit for this timing info.
        :param unit: Unit to set.
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(unit, [common.Unit])
        # noinspection Mypy
        self._proto.unit = unit.into_proto()
        return self

    def get_packet_start_os_timestamp(self) -> float:
        """
        :return: Packet start OS (non-monotonic) timestamp. Corresponds with first audio sample.
        """
        return self._proto.packet_start_os_timestamp

    def set_packet_start_os_timestamp(
        self, packet_start_os_timestamp
    ) -> "TimingInformation":
        """
        Sets the packet start OS (non-monotonic) timestamp. Corresponds with first audio sample.
        :param packet_start_os_timestamp: Timestamp to set.
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(packet_start_os_timestamp, [int, float])
        self._proto.packet_start_os_timestamp = packet_start_os_timestamp
        return self

    def get_packet_start_mach_timestamp(self) -> float:
        """
        :return: Machine (monotonic) start timestamp of packet. Corresponds with first audio sample.
        """
        return self._proto.packet_start_mach_timestamp

    def set_packet_start_mach_timestamp(
        self, packet_start_mach_timestamp: float
    ) -> "TimingInformation":
        """
        Sets the packet's start machine timestamp (monotonic). Corresponds with first audio sample.
        :param packet_start_mach_timestamp:
        :return:
        """
        redvox.api1000.common.typing.check_type(
            packet_start_mach_timestamp, [int, float]
        )
        self._proto.packet_start_mach_timestamp = packet_start_mach_timestamp
        return self

    def get_packet_end_os_timestamp(self) -> float:
        """
        :return: The packets end OS (non-monotonic) timestamp. Corresponds with the last audio sample.
        """
        return self._proto.packet_end_os_timestamp

    def set_packet_end_os_timestamp(
        self, packet_end_os_timestamp: float
    ) -> "TimingInformation":
        """
        Set the packet's end OS timestamp (non-monotonic). Corresponds with the last audio sample.
        :param packet_end_os_timestamp: Timestamp to set.
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(packet_end_os_timestamp, [int, float])
        self._proto.packet_end_os_timestamp = packet_end_os_timestamp
        return self

    def get_packet_end_mach_timestamp(self) -> float:
        """
        :return: The packet's end machine (monotonic) timestamp. Corresponds with the last audio sample.
        """
        return self._proto.packet_end_mach_timestamp

    def set_packet_end_mach_timestamp(
        self, packet_end_mach_timestamp: float
    ) -> "TimingInformation":
        """
        Set the packets machine end timestamp (monotonic). Corresponds with the last audio sample.
        :param packet_end_mach_timestamp: Timestamp to set.
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(packet_end_mach_timestamp, [int, float])
        self._proto.packet_end_mach_timestamp = packet_end_mach_timestamp
        return self

    def get_server_acquisition_arrival_timestamp(self) -> float:
        """
        :return: Timestamp set my acquisition server on packet arrival
        """
        return self._proto.server_acquisition_arrival_timestamp

    def set_server_acquisition_arrival_timestamp(
        self, server_acquisition_arrival_timestamp: float
    ) -> "TimingInformation":
        """
        Sets the server acquisition timestamp.
        :param server_acquisition_arrival_timestamp: Timestamp to set.
        :return: A modified instance of self.
        """
        redvox.api1000.common.typing.check_type(
            server_acquisition_arrival_timestamp, [int, float]
        )
        self._proto.server_acquisition_arrival_timestamp = (
            server_acquisition_arrival_timestamp
        )
        return self

    def get_app_start_mach_timestamp(self) -> float:
        """
        :return: Machine timestamp of when station started recording.
        """
        return self._proto.app_start_mach_timestamp

    def set_app_start_mach_timestamp(
        self, app_start_mach_timestamp: float
    ) -> "TimingInformation":
        """
        Sets the machine timestamp of when the app started recording.
        :param app_start_mach_timestamp:
        :return:
        """
        redvox.api1000.common.typing.check_type(app_start_mach_timestamp, [int, float])
        self._proto.app_start_mach_timestamp = app_start_mach_timestamp
        return self

    def get_synch_exchanges(self) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
        """
        :return: Synch exchanges collected during this packet.
        """
        return self._synch_exchanges

    def set_synch_exchanges(
        self, synch_exchanges: redvox.api1000.common.generic.ProtoRepeatedMessage
    ) -> "TimingInformation":
        """
        Sets the synch exchanges.
        :param synch_exchanges: An instance of a ProtoRepeatedMessage containing SyncExchanges.
        :return: A modified instance of self.
        """
        common.check_type(
            synch_exchanges, [redvox.api1000.common.generic.ProtoRepeatedMessage]
        )
        self._synch_exchanges.clear_values()
        self._synch_exchanges.append_values(synch_exchanges.get_values())
        return self

    def get_synch_exchange_array(self) -> List[float]:
        """
        Get the packet's synch exchanges as a single list of timestamps, with each synch exchange in
        a1, a2, a3, b1, b2, b3 order
        :return: The packet's synch exchanges as a single list of timestamps
        """
        time_sync_exchanges = self.get_synch_exchanges().get_values()
        time_sync = []
        for exchange in time_sync_exchanges:
            time_sync.extend(
                [
                    exchange.get_a1(),
                    exchange.get_a2(),
                    exchange.get_a3(),
                    exchange.get_b1(),
                    exchange.get_b2(),
                    exchange.get_b3(),
                ]
            )
        return time_sync

    def get_best_latency(self) -> float:
        """
        :return: Best latency calculated from synch exchanges
        """
        return self._proto.best_latency

    def set_best_latency(self, best_latency: float) -> "TimingInformation":
        """
        Sets the best latency.
        :param best_latency: Latency to set.
        :return: A modified instance of self.
        """
        redvox.api1000.common.typing.check_type(best_latency, [int, float])
        self._proto.best_latency = best_latency
        return self

    def get_best_offset(self) -> float:
        """
        :return: Best offset computed from synch exchanges.
        """
        return self._proto.best_offset

    def set_best_offset(self, best_offset: float) -> "TimingInformation":
        """
        Sets the best offset.
        :param best_offset: Offset to set.
        :return: A modified instance of self.
        """
        redvox.api1000.common.typing.check_type(best_offset, [int, float])
        self._proto.best_offset = best_offset
        return self

    def get_score(self) -> float:
        """
        :return: Score of timing information.
        """
        return self._proto.score

    def set_score(self, score: float) -> "TimingInformation":
        """
        Set score of timing information.
        :param score: Score to set.
        :return: A modified instance of self.
        """
        redvox.api1000.common.typing.check_type(score, [float])
        self._proto.score = score
        return self

    def get_score_method(self) -> TimingScoreMethod:
        """
        :return: The score method used for scoring the timing information.
        """
        return TimingScoreMethod(self._proto.score_method)

    def set_score_method(self, score_method: TimingScoreMethod) -> "TimingInformation":
        """
        Sets the score method.
        :param score_method: Score to set.
        :return: A modified instance of self.
        """
        redvox.api1000.common.typing.check_type(score_method, [TimingScoreMethod])
        self._proto.score_method = (
            redvox_api_m_pb2.RedvoxPacketM.TimingInformation.TimingScoreMethod.Value(
                score_method.name
            )
        )
        return self


def validate_timing_information(timing_information: TimingInformation) -> List[str]:
    """
    Validates timing information
    :param timing_information: Timing information to validate
    :return: A a list of validation errors
    """
    errors_list = []
    synch_vals = timing_information.get_synch_exchanges().get_values()
    # if we have synchronization values, we can validate them
    # otherwise we can just return an empty list since there's no point in validating nothing
    if len(synch_vals) > 0:
        for sync_exch in synch_vals:
            errors_list.extend(validate_synch_exchange(sync_exch))
    if timing_information.get_unit() != common.Unit.MICROSECONDS_SINCE_UNIX_EPOCH:
        errors_list.append(
            "Timing information unit is not microseconds since unix epoch"
        )
    if timing_information.get_packet_start_os_timestamp() == 0:
        errors_list.append("Timing information os start timestamp is 0")
    if timing_information.get_packet_start_mach_timestamp() == 0:
        errors_list.append("Timing information mach start timestamp is 0")
    if timing_information.get_packet_end_os_timestamp() == 0:
        errors_list.append("Timing information os end timestamp is 0")
    if timing_information.get_packet_end_mach_timestamp() == 0:
        errors_list.append("Timing information mach end timestamp is 0")
    if timing_information.get_app_start_mach_timestamp() == 0:
        errors_list.append("Timing information app mach start timestamp is 0")
    if (
        timing_information.get_packet_start_os_timestamp()
        > timing_information.get_packet_end_os_timestamp()
    ):
        errors_list.append(
            "Timing information os end timestamp is less than start timestamp"
        )
    if (
        timing_information.get_packet_start_mach_timestamp()
        > timing_information.get_packet_end_mach_timestamp()
    ):
        errors_list.append(
            "Timing information mach end timestamp is less than start timestamp"
        )
        # if timing.get_server_acquisition_arrival_timestamp() == 0:
        #     errors_list.append("Timing information server acquisition arrival timestamp is 0")
    return errors_list

Functions

def validate_synch_exchange(synch_exchange: SynchExchange) ‑> List[str]

Validates a synch exchange. :param synch_exchange: Exchange to validate. :return: A list of validation errors.

Expand source code
def validate_synch_exchange(synch_exchange: SynchExchange) -> List[str]:
    """
    Validates a synch exchange.
    :param synch_exchange: Exchange to validate.
    :return: A list of validation errors.
    """
    errors_list = []
    # assume 0 (default) is an invalid value
    if synch_exchange.get_a1() == 0:
        errors_list.append("Sync exchange a1 value is 0")
    if synch_exchange.get_a2() == 0:
        errors_list.append("Sync exchange a2 value is 0")
    if synch_exchange.get_a3() == 0:
        errors_list.append("Sync exchange a3 value is 0")
    if synch_exchange.get_a1() >= synch_exchange.get_a2():
        errors_list.append("Sync exchange a1 is greater than or equal to a2")
    if synch_exchange.get_a2() > synch_exchange.get_a3():
        errors_list.append("Sync exchange a2 is greater than a3")
    if synch_exchange.get_b1() == 0:
        errors_list.append("Sync exchange b1 value is 0")
    if synch_exchange.get_b2() == 0:
        errors_list.append("Sync exchange b2 value is 0")
    if synch_exchange.get_b3() == 0:
        errors_list.append("Sync exchange b3 value is 0")
    if synch_exchange.get_b1() > synch_exchange.get_b2():
        errors_list.append("Sync exchange b1 value is greater than b2")
    if synch_exchange.get_b2() >= synch_exchange.get_b3():
        errors_list.append("Sync exchange b2 value is greater than or equal to b3")
    if synch_exchange.get_unit() != common.Unit.MICROSECONDS_SINCE_UNIX_EPOCH:
        errors_list.append("Sync exchange unit is not microseconds since unix epoch")
    return errors_list
def validate_timing_information(timing_information: TimingInformation) ‑> List[str]

Validates timing information :param timing_information: Timing information to validate :return: A a list of validation errors

Expand source code
def validate_timing_information(timing_information: TimingInformation) -> List[str]:
    """
    Validates timing information
    :param timing_information: Timing information to validate
    :return: A a list of validation errors
    """
    errors_list = []
    synch_vals = timing_information.get_synch_exchanges().get_values()
    # if we have synchronization values, we can validate them
    # otherwise we can just return an empty list since there's no point in validating nothing
    if len(synch_vals) > 0:
        for sync_exch in synch_vals:
            errors_list.extend(validate_synch_exchange(sync_exch))
    if timing_information.get_unit() != common.Unit.MICROSECONDS_SINCE_UNIX_EPOCH:
        errors_list.append(
            "Timing information unit is not microseconds since unix epoch"
        )
    if timing_information.get_packet_start_os_timestamp() == 0:
        errors_list.append("Timing information os start timestamp is 0")
    if timing_information.get_packet_start_mach_timestamp() == 0:
        errors_list.append("Timing information mach start timestamp is 0")
    if timing_information.get_packet_end_os_timestamp() == 0:
        errors_list.append("Timing information os end timestamp is 0")
    if timing_information.get_packet_end_mach_timestamp() == 0:
        errors_list.append("Timing information mach end timestamp is 0")
    if timing_information.get_app_start_mach_timestamp() == 0:
        errors_list.append("Timing information app mach start timestamp is 0")
    if (
        timing_information.get_packet_start_os_timestamp()
        > timing_information.get_packet_end_os_timestamp()
    ):
        errors_list.append(
            "Timing information os end timestamp is less than start timestamp"
        )
    if (
        timing_information.get_packet_start_mach_timestamp()
        > timing_information.get_packet_end_mach_timestamp()
    ):
        errors_list.append(
            "Timing information mach end timestamp is less than start timestamp"
        )
        # if timing.get_server_acquisition_arrival_timestamp() == 0:
        #     errors_list.append("Timing information server acquisition arrival timestamp is 0")
    return errors_list

Classes

class SynchExchangeProto (*args, **kwargs)

A ProtocolMessage

Ancestors

  • google._upb._message.Message
  • google.protobuf.message.Message

Class variables

var DESCRIPTOR
var MetadataEntry

A ProtocolMessage

class SynchExchange (proto: src.redvox_api_m.redvox_api_m_pb2.SynchExchange)

Encapsulates a single complete exchange of the RedVox custom synch exchange algorithm.

Expand source code
class SynchExchange(
    redvox.api1000.common.generic.ProtoBase[
        redvox_api_m_pb2.RedvoxPacketM.TimingInformation.SynchExchange
    ]
):
    """
    Encapsulates a single complete exchange of the RedVox custom synch exchange algorithm.
    """

    def __init__(
        self, proto: redvox_api_m_pb2.RedvoxPacketM.TimingInformation.SynchExchange
    ):
        super().__init__(proto)

    @staticmethod
    def new() -> "SynchExchange":
        """
        :return: A new, empty SynchExchange instance
        """
        exchange = SynchExchange(
            redvox_api_m_pb2.RedvoxPacketM.TimingInformation.SynchExchange()
        )
        exchange.set_unit(common.Unit.MICROSECONDS_SINCE_UNIX_EPOCH)
        return exchange

    def get_unit(self) -> common.Unit:
        """
        Returns the unit for exchange values.
        :return: The unit for exchange values.
        """
        # noinspection Mypy
        # pylint: disable=E1101
        return common.Unit.from_proto(self._proto.unit)

    def set_default_unit(self) -> "SynchExchange":
        """
        Sets the default unit for this type.
        :return: A modified instance of self
        """
        return self.set_unit(common.Unit.MICROSECONDS_SINCE_UNIX_EPOCH)

    def set_unit(self, unit: Union[common.Unit, int]) -> "SynchExchange":
        """
        Sets the unit for this exchange type
        :param unit: Unit to set
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(unit, [common.Unit])
        # noinspection Mypy
        self._proto.unit = unit.into_proto()
        return self

    def get_a1(self) -> float:
        """
        :return: The A1 value of the exchange.
        """
        return self._proto.a1

    # pylint: disable=C0103
    def set_a1(self, a1: float) -> "SynchExchange":
        """
        Sets the A1 value of this exchange
        :param a1: Value to set
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(a1, [int, float])
        self._proto.a1 = a1
        return self

    def get_a2(self) -> float:
        """
        :return: The A2 value of the exchange.
        """
        return self._proto.a2

    # pylint: disable=C0103
    def set_a2(self, a2: float) -> "SynchExchange":
        """
        Sets the A2 value of this exchange
        :param a2: Value to set
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(a2, [int, float])
        self._proto.a2 = a2
        return self

    def get_a3(self) -> float:
        """
        :return: The A3 value of the exchange.
        """
        return self._proto.a3

    # pylint: disable=C0103
    def set_a3(self, a3: float) -> "SynchExchange":
        """
        Sets the A3 value of this exchange
        :param a3: Value to set
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(a3, [int, float])
        self._proto.a3 = a3
        return self

    def get_b1(self) -> float:
        """
        :return: The B1 value of the exchange.
        """
        return self._proto.b1

    # pylint: disable=C0103
    def set_b1(self, b1: float) -> "SynchExchange":
        """
        Sets the B1 value of this exchange
        :param b1: Value to set
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(b1, [int, float])
        self._proto.b1 = b1
        return self

    def get_b2(self) -> float:
        """
        :return: The B2 value of the exchange.
        """
        return self._proto.b2

    # pylint: disable=C0103
    def set_b2(self, b2: float) -> "SynchExchange":
        """
        Sets the B2 value of this exchange
        :param b2: Value to set
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(b2, [int, float])
        self._proto.b2 = b2
        return self

    def get_b3(self) -> float:
        """
        :return: The B3 value of the exchange.
        """
        return self._proto.b3

    # pylint: disable=C0103
    def set_b3(self, b3: float) -> "SynchExchange":
        """
        Sets the B3 value of this exchange
        :param b3: Value to set
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(b3, [int, float])
        self._proto.b3 = b3
        return self

Ancestors

Static methods

def new() ‑> SynchExchange

:return: A new, empty SynchExchange instance

Expand source code
@staticmethod
def new() -> "SynchExchange":
    """
    :return: A new, empty SynchExchange instance
    """
    exchange = SynchExchange(
        redvox_api_m_pb2.RedvoxPacketM.TimingInformation.SynchExchange()
    )
    exchange.set_unit(common.Unit.MICROSECONDS_SINCE_UNIX_EPOCH)
    return exchange

Methods

def get_a1(self) ‑> float

:return: The A1 value of the exchange.

Expand source code
def get_a1(self) -> float:
    """
    :return: The A1 value of the exchange.
    """
    return self._proto.a1
def get_a2(self) ‑> float

:return: The A2 value of the exchange.

Expand source code
def get_a2(self) -> float:
    """
    :return: The A2 value of the exchange.
    """
    return self._proto.a2
def get_a3(self) ‑> float

:return: The A3 value of the exchange.

Expand source code
def get_a3(self) -> float:
    """
    :return: The A3 value of the exchange.
    """
    return self._proto.a3
def get_b1(self) ‑> float

:return: The B1 value of the exchange.

Expand source code
def get_b1(self) -> float:
    """
    :return: The B1 value of the exchange.
    """
    return self._proto.b1
def get_b2(self) ‑> float

:return: The B2 value of the exchange.

Expand source code
def get_b2(self) -> float:
    """
    :return: The B2 value of the exchange.
    """
    return self._proto.b2
def get_b3(self) ‑> float

:return: The B3 value of the exchange.

Expand source code
def get_b3(self) -> float:
    """
    :return: The B3 value of the exchange.
    """
    return self._proto.b3
def get_unit(self) ‑> Unit

Returns the unit for exchange values. :return: The unit for exchange values.

Expand source code
def get_unit(self) -> common.Unit:
    """
    Returns the unit for exchange values.
    :return: The unit for exchange values.
    """
    # noinspection Mypy
    # pylint: disable=E1101
    return common.Unit.from_proto(self._proto.unit)
def set_a1(self, a1: float) ‑> SynchExchange

Sets the A1 value of this exchange :param a1: Value to set :return: A modified instance of self

Expand source code
def set_a1(self, a1: float) -> "SynchExchange":
    """
    Sets the A1 value of this exchange
    :param a1: Value to set
    :return: A modified instance of self
    """
    redvox.api1000.common.typing.check_type(a1, [int, float])
    self._proto.a1 = a1
    return self
def set_a2(self, a2: float) ‑> SynchExchange

Sets the A2 value of this exchange :param a2: Value to set :return: A modified instance of self

Expand source code
def set_a2(self, a2: float) -> "SynchExchange":
    """
    Sets the A2 value of this exchange
    :param a2: Value to set
    :return: A modified instance of self
    """
    redvox.api1000.common.typing.check_type(a2, [int, float])
    self._proto.a2 = a2
    return self
def set_a3(self, a3: float) ‑> SynchExchange

Sets the A3 value of this exchange :param a3: Value to set :return: A modified instance of self

Expand source code
def set_a3(self, a3: float) -> "SynchExchange":
    """
    Sets the A3 value of this exchange
    :param a3: Value to set
    :return: A modified instance of self
    """
    redvox.api1000.common.typing.check_type(a3, [int, float])
    self._proto.a3 = a3
    return self
def set_b1(self, b1: float) ‑> SynchExchange

Sets the B1 value of this exchange :param b1: Value to set :return: A modified instance of self

Expand source code
def set_b1(self, b1: float) -> "SynchExchange":
    """
    Sets the B1 value of this exchange
    :param b1: Value to set
    :return: A modified instance of self
    """
    redvox.api1000.common.typing.check_type(b1, [int, float])
    self._proto.b1 = b1
    return self
def set_b2(self, b2: float) ‑> SynchExchange

Sets the B2 value of this exchange :param b2: Value to set :return: A modified instance of self

Expand source code
def set_b2(self, b2: float) -> "SynchExchange":
    """
    Sets the B2 value of this exchange
    :param b2: Value to set
    :return: A modified instance of self
    """
    redvox.api1000.common.typing.check_type(b2, [int, float])
    self._proto.b2 = b2
    return self
def set_b3(self, b3: float) ‑> SynchExchange

Sets the B3 value of this exchange :param b3: Value to set :return: A modified instance of self

Expand source code
def set_b3(self, b3: float) -> "SynchExchange":
    """
    Sets the B3 value of this exchange
    :param b3: Value to set
    :return: A modified instance of self
    """
    redvox.api1000.common.typing.check_type(b3, [int, float])
    self._proto.b3 = b3
    return self
def set_default_unit(self) ‑> SynchExchange

Sets the default unit for this type. :return: A modified instance of self

Expand source code
def set_default_unit(self) -> "SynchExchange":
    """
    Sets the default unit for this type.
    :return: A modified instance of self
    """
    return self.set_unit(common.Unit.MICROSECONDS_SINCE_UNIX_EPOCH)
def set_unit(self, unit: Union[Unit, int]) ‑> SynchExchange

Sets the unit for this exchange type :param unit: Unit to set :return: A modified instance of self

Expand source code
def set_unit(self, unit: Union[common.Unit, int]) -> "SynchExchange":
    """
    Sets the unit for this exchange type
    :param unit: Unit to set
    :return: A modified instance of self
    """
    redvox.api1000.common.typing.check_type(unit, [common.Unit])
    # noinspection Mypy
    self._proto.unit = unit.into_proto()
    return self

Inherited members

class TimingInformation (proto: src.redvox_api_m.redvox_api_m_pb2.TimingInformation)

Collection of timing information for this packet.

Expand source code
class TimingInformation(
    redvox.api1000.common.generic.ProtoBase[
        redvox_api_m_pb2.RedvoxPacketM.TimingInformation
    ]
):
    """
    Collection of timing information for this packet.
    """

    def __init__(self, proto: redvox_api_m_pb2.RedvoxPacketM.TimingInformation):
        super().__init__(proto)
        self._synch_exchanges: redvox.api1000.common.generic.ProtoRepeatedMessage[
            SynchExchangeProto, SynchExchange
        ] = redvox.api1000.common.generic.ProtoRepeatedMessage(
            proto,
            proto.synch_exchanges,
            _SYNCH_EXCHANGES_FIELD_NAME,
            SynchExchange,
            lambda exchange: exchange.get_proto(),
        )

    @staticmethod
    def new() -> "TimingInformation":
        """
        :return: A new, empty TimingInformation instance
        """
        return TimingInformation(redvox_api_m_pb2.RedvoxPacketM.TimingInformation())

    def get_unit(self) -> common.Unit:
        """
        :return: Unit used for this timing information.
        """
        # noinspection Mypy
        # pylint: disable=E1101
        return common.Unit.from_proto(self._proto.unit)

    def set_default_unit(self) -> "TimingInformation":
        """
        Sets the default time unit.
        :return: A modified instance of self
        """
        return self.set_unit(common.Unit.MICROSECONDS_SINCE_UNIX_EPOCH)

    def set_unit(self, unit: Union[common.Unit, int]) -> "TimingInformation":
        """
        Sets a unit for this timing info.
        :param unit: Unit to set.
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(unit, [common.Unit])
        # noinspection Mypy
        self._proto.unit = unit.into_proto()
        return self

    def get_packet_start_os_timestamp(self) -> float:
        """
        :return: Packet start OS (non-monotonic) timestamp. Corresponds with first audio sample.
        """
        return self._proto.packet_start_os_timestamp

    def set_packet_start_os_timestamp(
        self, packet_start_os_timestamp
    ) -> "TimingInformation":
        """
        Sets the packet start OS (non-monotonic) timestamp. Corresponds with first audio sample.
        :param packet_start_os_timestamp: Timestamp to set.
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(packet_start_os_timestamp, [int, float])
        self._proto.packet_start_os_timestamp = packet_start_os_timestamp
        return self

    def get_packet_start_mach_timestamp(self) -> float:
        """
        :return: Machine (monotonic) start timestamp of packet. Corresponds with first audio sample.
        """
        return self._proto.packet_start_mach_timestamp

    def set_packet_start_mach_timestamp(
        self, packet_start_mach_timestamp: float
    ) -> "TimingInformation":
        """
        Sets the packet's start machine timestamp (monotonic). Corresponds with first audio sample.
        :param packet_start_mach_timestamp:
        :return:
        """
        redvox.api1000.common.typing.check_type(
            packet_start_mach_timestamp, [int, float]
        )
        self._proto.packet_start_mach_timestamp = packet_start_mach_timestamp
        return self

    def get_packet_end_os_timestamp(self) -> float:
        """
        :return: The packets end OS (non-monotonic) timestamp. Corresponds with the last audio sample.
        """
        return self._proto.packet_end_os_timestamp

    def set_packet_end_os_timestamp(
        self, packet_end_os_timestamp: float
    ) -> "TimingInformation":
        """
        Set the packet's end OS timestamp (non-monotonic). Corresponds with the last audio sample.
        :param packet_end_os_timestamp: Timestamp to set.
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(packet_end_os_timestamp, [int, float])
        self._proto.packet_end_os_timestamp = packet_end_os_timestamp
        return self

    def get_packet_end_mach_timestamp(self) -> float:
        """
        :return: The packet's end machine (monotonic) timestamp. Corresponds with the last audio sample.
        """
        return self._proto.packet_end_mach_timestamp

    def set_packet_end_mach_timestamp(
        self, packet_end_mach_timestamp: float
    ) -> "TimingInformation":
        """
        Set the packets machine end timestamp (monotonic). Corresponds with the last audio sample.
        :param packet_end_mach_timestamp: Timestamp to set.
        :return: A modified instance of self
        """
        redvox.api1000.common.typing.check_type(packet_end_mach_timestamp, [int, float])
        self._proto.packet_end_mach_timestamp = packet_end_mach_timestamp
        return self

    def get_server_acquisition_arrival_timestamp(self) -> float:
        """
        :return: Timestamp set my acquisition server on packet arrival
        """
        return self._proto.server_acquisition_arrival_timestamp

    def set_server_acquisition_arrival_timestamp(
        self, server_acquisition_arrival_timestamp: float
    ) -> "TimingInformation":
        """
        Sets the server acquisition timestamp.
        :param server_acquisition_arrival_timestamp: Timestamp to set.
        :return: A modified instance of self.
        """
        redvox.api1000.common.typing.check_type(
            server_acquisition_arrival_timestamp, [int, float]
        )
        self._proto.server_acquisition_arrival_timestamp = (
            server_acquisition_arrival_timestamp
        )
        return self

    def get_app_start_mach_timestamp(self) -> float:
        """
        :return: Machine timestamp of when station started recording.
        """
        return self._proto.app_start_mach_timestamp

    def set_app_start_mach_timestamp(
        self, app_start_mach_timestamp: float
    ) -> "TimingInformation":
        """
        Sets the machine timestamp of when the app started recording.
        :param app_start_mach_timestamp:
        :return:
        """
        redvox.api1000.common.typing.check_type(app_start_mach_timestamp, [int, float])
        self._proto.app_start_mach_timestamp = app_start_mach_timestamp
        return self

    def get_synch_exchanges(self) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
        """
        :return: Synch exchanges collected during this packet.
        """
        return self._synch_exchanges

    def set_synch_exchanges(
        self, synch_exchanges: redvox.api1000.common.generic.ProtoRepeatedMessage
    ) -> "TimingInformation":
        """
        Sets the synch exchanges.
        :param synch_exchanges: An instance of a ProtoRepeatedMessage containing SyncExchanges.
        :return: A modified instance of self.
        """
        common.check_type(
            synch_exchanges, [redvox.api1000.common.generic.ProtoRepeatedMessage]
        )
        self._synch_exchanges.clear_values()
        self._synch_exchanges.append_values(synch_exchanges.get_values())
        return self

    def get_synch_exchange_array(self) -> List[float]:
        """
        Get the packet's synch exchanges as a single list of timestamps, with each synch exchange in
        a1, a2, a3, b1, b2, b3 order
        :return: The packet's synch exchanges as a single list of timestamps
        """
        time_sync_exchanges = self.get_synch_exchanges().get_values()
        time_sync = []
        for exchange in time_sync_exchanges:
            time_sync.extend(
                [
                    exchange.get_a1(),
                    exchange.get_a2(),
                    exchange.get_a3(),
                    exchange.get_b1(),
                    exchange.get_b2(),
                    exchange.get_b3(),
                ]
            )
        return time_sync

    def get_best_latency(self) -> float:
        """
        :return: Best latency calculated from synch exchanges
        """
        return self._proto.best_latency

    def set_best_latency(self, best_latency: float) -> "TimingInformation":
        """
        Sets the best latency.
        :param best_latency: Latency to set.
        :return: A modified instance of self.
        """
        redvox.api1000.common.typing.check_type(best_latency, [int, float])
        self._proto.best_latency = best_latency
        return self

    def get_best_offset(self) -> float:
        """
        :return: Best offset computed from synch exchanges.
        """
        return self._proto.best_offset

    def set_best_offset(self, best_offset: float) -> "TimingInformation":
        """
        Sets the best offset.
        :param best_offset: Offset to set.
        :return: A modified instance of self.
        """
        redvox.api1000.common.typing.check_type(best_offset, [int, float])
        self._proto.best_offset = best_offset
        return self

    def get_score(self) -> float:
        """
        :return: Score of timing information.
        """
        return self._proto.score

    def set_score(self, score: float) -> "TimingInformation":
        """
        Set score of timing information.
        :param score: Score to set.
        :return: A modified instance of self.
        """
        redvox.api1000.common.typing.check_type(score, [float])
        self._proto.score = score
        return self

    def get_score_method(self) -> TimingScoreMethod:
        """
        :return: The score method used for scoring the timing information.
        """
        return TimingScoreMethod(self._proto.score_method)

    def set_score_method(self, score_method: TimingScoreMethod) -> "TimingInformation":
        """
        Sets the score method.
        :param score_method: Score to set.
        :return: A modified instance of self.
        """
        redvox.api1000.common.typing.check_type(score_method, [TimingScoreMethod])
        self._proto.score_method = (
            redvox_api_m_pb2.RedvoxPacketM.TimingInformation.TimingScoreMethod.Value(
                score_method.name
            )
        )
        return self

Ancestors

Static methods

def new() ‑> TimingInformation

:return: A new, empty TimingInformation instance

Expand source code
@staticmethod
def new() -> "TimingInformation":
    """
    :return: A new, empty TimingInformation instance
    """
    return TimingInformation(redvox_api_m_pb2.RedvoxPacketM.TimingInformation())

Methods

def get_app_start_mach_timestamp(self) ‑> float

:return: Machine timestamp of when station started recording.

Expand source code
def get_app_start_mach_timestamp(self) -> float:
    """
    :return: Machine timestamp of when station started recording.
    """
    return self._proto.app_start_mach_timestamp
def get_best_latency(self) ‑> float

:return: Best latency calculated from synch exchanges

Expand source code
def get_best_latency(self) -> float:
    """
    :return: Best latency calculated from synch exchanges
    """
    return self._proto.best_latency
def get_best_offset(self) ‑> float

:return: Best offset computed from synch exchanges.

Expand source code
def get_best_offset(self) -> float:
    """
    :return: Best offset computed from synch exchanges.
    """
    return self._proto.best_offset
def get_packet_end_mach_timestamp(self) ‑> float

:return: The packet's end machine (monotonic) timestamp. Corresponds with the last audio sample.

Expand source code
def get_packet_end_mach_timestamp(self) -> float:
    """
    :return: The packet's end machine (monotonic) timestamp. Corresponds with the last audio sample.
    """
    return self._proto.packet_end_mach_timestamp
def get_packet_end_os_timestamp(self) ‑> float

:return: The packets end OS (non-monotonic) timestamp. Corresponds with the last audio sample.

Expand source code
def get_packet_end_os_timestamp(self) -> float:
    """
    :return: The packets end OS (non-monotonic) timestamp. Corresponds with the last audio sample.
    """
    return self._proto.packet_end_os_timestamp
def get_packet_start_mach_timestamp(self) ‑> float

:return: Machine (monotonic) start timestamp of packet. Corresponds with first audio sample.

Expand source code
def get_packet_start_mach_timestamp(self) -> float:
    """
    :return: Machine (monotonic) start timestamp of packet. Corresponds with first audio sample.
    """
    return self._proto.packet_start_mach_timestamp
def get_packet_start_os_timestamp(self) ‑> float

:return: Packet start OS (non-monotonic) timestamp. Corresponds with first audio sample.

Expand source code
def get_packet_start_os_timestamp(self) -> float:
    """
    :return: Packet start OS (non-monotonic) timestamp. Corresponds with first audio sample.
    """
    return self._proto.packet_start_os_timestamp
def get_score(self) ‑> float

:return: Score of timing information.

Expand source code
def get_score(self) -> float:
    """
    :return: Score of timing information.
    """
    return self._proto.score
def get_score_method(self) ‑> TimingScoreMethod

:return: The score method used for scoring the timing information.

Expand source code
def get_score_method(self) -> TimingScoreMethod:
    """
    :return: The score method used for scoring the timing information.
    """
    return TimingScoreMethod(self._proto.score_method)
def get_server_acquisition_arrival_timestamp(self) ‑> float

:return: Timestamp set my acquisition server on packet arrival

Expand source code
def get_server_acquisition_arrival_timestamp(self) -> float:
    """
    :return: Timestamp set my acquisition server on packet arrival
    """
    return self._proto.server_acquisition_arrival_timestamp
def get_synch_exchange_array(self) ‑> List[float]

Get the packet's synch exchanges as a single list of timestamps, with each synch exchange in a1, a2, a3, b1, b2, b3 order :return: The packet's synch exchanges as a single list of timestamps

Expand source code
def get_synch_exchange_array(self) -> List[float]:
    """
    Get the packet's synch exchanges as a single list of timestamps, with each synch exchange in
    a1, a2, a3, b1, b2, b3 order
    :return: The packet's synch exchanges as a single list of timestamps
    """
    time_sync_exchanges = self.get_synch_exchanges().get_values()
    time_sync = []
    for exchange in time_sync_exchanges:
        time_sync.extend(
            [
                exchange.get_a1(),
                exchange.get_a2(),
                exchange.get_a3(),
                exchange.get_b1(),
                exchange.get_b2(),
                exchange.get_b3(),
            ]
        )
    return time_sync
def get_synch_exchanges(self) ‑> ProtoRepeatedMessage

:return: Synch exchanges collected during this packet.

Expand source code
def get_synch_exchanges(self) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
    """
    :return: Synch exchanges collected during this packet.
    """
    return self._synch_exchanges
def get_unit(self) ‑> Unit

:return: Unit used for this timing information.

Expand source code
def get_unit(self) -> common.Unit:
    """
    :return: Unit used for this timing information.
    """
    # noinspection Mypy
    # pylint: disable=E1101
    return common.Unit.from_proto(self._proto.unit)
def set_app_start_mach_timestamp(self, app_start_mach_timestamp: float) ‑> TimingInformation

Sets the machine timestamp of when the app started recording. :param app_start_mach_timestamp: :return:

Expand source code
def set_app_start_mach_timestamp(
    self, app_start_mach_timestamp: float
) -> "TimingInformation":
    """
    Sets the machine timestamp of when the app started recording.
    :param app_start_mach_timestamp:
    :return:
    """
    redvox.api1000.common.typing.check_type(app_start_mach_timestamp, [int, float])
    self._proto.app_start_mach_timestamp = app_start_mach_timestamp
    return self
def set_best_latency(self, best_latency: float) ‑> TimingInformation

Sets the best latency. :param best_latency: Latency to set. :return: A modified instance of self.

Expand source code
def set_best_latency(self, best_latency: float) -> "TimingInformation":
    """
    Sets the best latency.
    :param best_latency: Latency to set.
    :return: A modified instance of self.
    """
    redvox.api1000.common.typing.check_type(best_latency, [int, float])
    self._proto.best_latency = best_latency
    return self
def set_best_offset(self, best_offset: float) ‑> TimingInformation

Sets the best offset. :param best_offset: Offset to set. :return: A modified instance of self.

Expand source code
def set_best_offset(self, best_offset: float) -> "TimingInformation":
    """
    Sets the best offset.
    :param best_offset: Offset to set.
    :return: A modified instance of self.
    """
    redvox.api1000.common.typing.check_type(best_offset, [int, float])
    self._proto.best_offset = best_offset
    return self
def set_default_unit(self) ‑> TimingInformation

Sets the default time unit. :return: A modified instance of self

Expand source code
def set_default_unit(self) -> "TimingInformation":
    """
    Sets the default time unit.
    :return: A modified instance of self
    """
    return self.set_unit(common.Unit.MICROSECONDS_SINCE_UNIX_EPOCH)
def set_packet_end_mach_timestamp(self, packet_end_mach_timestamp: float) ‑> TimingInformation

Set the packets machine end timestamp (monotonic). Corresponds with the last audio sample. :param packet_end_mach_timestamp: Timestamp to set. :return: A modified instance of self

Expand source code
def set_packet_end_mach_timestamp(
    self, packet_end_mach_timestamp: float
) -> "TimingInformation":
    """
    Set the packets machine end timestamp (monotonic). Corresponds with the last audio sample.
    :param packet_end_mach_timestamp: Timestamp to set.
    :return: A modified instance of self
    """
    redvox.api1000.common.typing.check_type(packet_end_mach_timestamp, [int, float])
    self._proto.packet_end_mach_timestamp = packet_end_mach_timestamp
    return self
def set_packet_end_os_timestamp(self, packet_end_os_timestamp: float) ‑> TimingInformation

Set the packet's end OS timestamp (non-monotonic). Corresponds with the last audio sample. :param packet_end_os_timestamp: Timestamp to set. :return: A modified instance of self

Expand source code
def set_packet_end_os_timestamp(
    self, packet_end_os_timestamp: float
) -> "TimingInformation":
    """
    Set the packet's end OS timestamp (non-monotonic). Corresponds with the last audio sample.
    :param packet_end_os_timestamp: Timestamp to set.
    :return: A modified instance of self
    """
    redvox.api1000.common.typing.check_type(packet_end_os_timestamp, [int, float])
    self._proto.packet_end_os_timestamp = packet_end_os_timestamp
    return self
def set_packet_start_mach_timestamp(self, packet_start_mach_timestamp: float) ‑> TimingInformation

Sets the packet's start machine timestamp (monotonic). Corresponds with first audio sample. :param packet_start_mach_timestamp: :return:

Expand source code
def set_packet_start_mach_timestamp(
    self, packet_start_mach_timestamp: float
) -> "TimingInformation":
    """
    Sets the packet's start machine timestamp (monotonic). Corresponds with first audio sample.
    :param packet_start_mach_timestamp:
    :return:
    """
    redvox.api1000.common.typing.check_type(
        packet_start_mach_timestamp, [int, float]
    )
    self._proto.packet_start_mach_timestamp = packet_start_mach_timestamp
    return self
def set_packet_start_os_timestamp(self, packet_start_os_timestamp) ‑> TimingInformation

Sets the packet start OS (non-monotonic) timestamp. Corresponds with first audio sample. :param packet_start_os_timestamp: Timestamp to set. :return: A modified instance of self

Expand source code
def set_packet_start_os_timestamp(
    self, packet_start_os_timestamp
) -> "TimingInformation":
    """
    Sets the packet start OS (non-monotonic) timestamp. Corresponds with first audio sample.
    :param packet_start_os_timestamp: Timestamp to set.
    :return: A modified instance of self
    """
    redvox.api1000.common.typing.check_type(packet_start_os_timestamp, [int, float])
    self._proto.packet_start_os_timestamp = packet_start_os_timestamp
    return self
def set_score(self, score: float) ‑> TimingInformation

Set score of timing information. :param score: Score to set. :return: A modified instance of self.

Expand source code
def set_score(self, score: float) -> "TimingInformation":
    """
    Set score of timing information.
    :param score: Score to set.
    :return: A modified instance of self.
    """
    redvox.api1000.common.typing.check_type(score, [float])
    self._proto.score = score
    return self
def set_score_method(self, score_method: TimingScoreMethod) ‑> TimingInformation

Sets the score method. :param score_method: Score to set. :return: A modified instance of self.

Expand source code
def set_score_method(self, score_method: TimingScoreMethod) -> "TimingInformation":
    """
    Sets the score method.
    :param score_method: Score to set.
    :return: A modified instance of self.
    """
    redvox.api1000.common.typing.check_type(score_method, [TimingScoreMethod])
    self._proto.score_method = (
        redvox_api_m_pb2.RedvoxPacketM.TimingInformation.TimingScoreMethod.Value(
            score_method.name
        )
    )
    return self
def set_server_acquisition_arrival_timestamp(self, server_acquisition_arrival_timestamp: float) ‑> TimingInformation

Sets the server acquisition timestamp. :param server_acquisition_arrival_timestamp: Timestamp to set. :return: A modified instance of self.

Expand source code
def set_server_acquisition_arrival_timestamp(
    self, server_acquisition_arrival_timestamp: float
) -> "TimingInformation":
    """
    Sets the server acquisition timestamp.
    :param server_acquisition_arrival_timestamp: Timestamp to set.
    :return: A modified instance of self.
    """
    redvox.api1000.common.typing.check_type(
        server_acquisition_arrival_timestamp, [int, float]
    )
    self._proto.server_acquisition_arrival_timestamp = (
        server_acquisition_arrival_timestamp
    )
    return self
def set_synch_exchanges(self, synch_exchanges: ProtoRepeatedMessage) ‑> TimingInformation

Sets the synch exchanges. :param synch_exchanges: An instance of a ProtoRepeatedMessage containing SyncExchanges. :return: A modified instance of self.

Expand source code
def set_synch_exchanges(
    self, synch_exchanges: redvox.api1000.common.generic.ProtoRepeatedMessage
) -> "TimingInformation":
    """
    Sets the synch exchanges.
    :param synch_exchanges: An instance of a ProtoRepeatedMessage containing SyncExchanges.
    :return: A modified instance of self.
    """
    common.check_type(
        synch_exchanges, [redvox.api1000.common.generic.ProtoRepeatedMessage]
    )
    self._synch_exchanges.clear_values()
    self._synch_exchanges.append_values(synch_exchanges.get_values())
    return self
def set_unit(self, unit: Union[Unit, int]) ‑> TimingInformation

Sets a unit for this timing info. :param unit: Unit to set. :return: A modified instance of self

Expand source code
def set_unit(self, unit: Union[common.Unit, int]) -> "TimingInformation":
    """
    Sets a unit for this timing info.
    :param unit: Unit to set.
    :return: A modified instance of self
    """
    redvox.api1000.common.typing.check_type(unit, [common.Unit])
    # noinspection Mypy
    self._proto.unit = unit.into_proto()
    return self

Inherited members

class TimingScoreMethod (value, names=None, *, module=None, qualname=None, type=None, start=1)

Method used to score the timing.

Expand source code
@wrap_enum(redvox_api_m_pb2.RedvoxPacketM.TimingInformation.TimingScoreMethod)
class TimingScoreMethod(enum.Enum):
    """
    Method used to score the timing.
    """

    UNKNOWN: int = 0

Ancestors

  • enum.Enum

Class variables

var UNKNOWN : int
var from_proto

Method used to score the timing.

Methods

def into_proto(self)
Expand source code
setattr(enum, "into_proto", lambda self: proto_type.Value(self.name))