# Module `redvox.api1000.wrapped_redvox_packet.station_information`

This module provides access to underlying station information from RedVox API M data.

Expand source code

    """
    This module provides access to underlying station information from RedVox API M data.
    """

    import enum
    from typing import List, Optional

    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

    _NETWORK_TYPE_FIELD_NAME: str = "network_type"
    _CELL_SERVICE_STATE_FIELD_NAME: str = "cell_service_state"
    _POWER_STATE_FIELD_NAME: str = "power_state"
    _ADDITIONAL_INPUT_SENSORS_FIELD_NAME: str = "additional_input_sensors"
    _WIFI_WAKE_LOCK_FIELD_NAME: str = "wifi_wake_lock"
    _SCREEN_STATE_FIELD_NAME: str = "screen_state"

    InputSensorProto = (
        redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings.InputSensor
    )

    # noinspection Mypy
    @wrap_enum(
        redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings.AudioSamplingRate
    )
    class AudioSamplingRate(enum.Enum):
        """
        Sampling Rate as provided by the app settings.
        """

        UNKNOWN_SAMPLING_RATE: int = 0
        HZ_80: int = 1
        HZ_800: int = 2
        HZ_8000: int = 3
        HZ_16000: int = 4
        HZ_48000: int = 5

        @staticmethod
        def from_sampling_rate(sampling_rate: float) -> Optional["AudioSamplingRate"]:
            """
            Convert from a numeric sampling rate into this enum.
            :param sampling_rate: Numeric sampling rate.
            :return: An instance of this enum.
            """
            if sampling_rate == 80.0:
                return AudioSamplingRate["HZ_80"]
            elif sampling_rate == 800.0:
                return AudioSamplingRate["HZ_800"]
            elif sampling_rate == 8000.0:
                return AudioSamplingRate["HZ_8000"]
            elif sampling_rate == 16000.0:
                return AudioSamplingRate["HZ_16000"]
            elif sampling_rate == 48000.0:
                return AudioSamplingRate["HZ_48000"]
            else:
                return AudioSamplingRate["UNKNOWN_SAMPLING_RATE"]

    # noinspection Mypy
    @wrap_enum(
        redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings.AudioSourceTuning
    )
    class AudioSourceTuning(enum.Enum):
        """
        Audio source tuning from app settings
        """

        UNKNOWN_TUNING: int = 0
        INFRASOUND_TUNING: int = 1
        LOW_AUDIO_TUNING: int = 2
        AUDIO_TUNING: int = 3

    # noinspection Mypy
    @wrap_enum(redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings.InputSensor)
    class InputSensor(enum.Enum):
        """
        Input sensors provided to additional input sensors in the app settings.
        """

        UNKNOWN_SENSOR: int = 0
        ACCELEROMETER = 1
        ACCELEROMETER_FAST = 2
        AMBIENT_TEMPERATURE = 3
        AUDIO = 4
        COMPRESSED_AUDIO = 5
        GRAVITY = 6
        GYROSCOPE = 7
        GYROSCOPE_FAST = 8
        IMAGE_PER_SECOND = 9
        IMAGE_PER_PACKET = 10
        LIGHT = 11
        LINEAR_ACCELERATION = 12
        LOCATION = 13
        MAGNETOMETER = 14
        MAGNETOMETER_FAST = 15
        ORIENTATION = 16
        PRESSURE = 17
        PROXIMITY = 18
        RELATIVE_HUMIDITY = 19
        ROTATION_VECTOR = 20
        VELOCITY = 21

    # noinspection Mypy
    @wrap_enum(redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings.FftOverlap)
    class FftOverlap(enum.Enum):
        """
        FFT overlap provided by the app settings
        """

        UNKNOWN: int = 0
        PERCENT_25: int = 1
        PERCENT_50: int = 2
        PERCENT_75: int = 3

    # noinspection Mypy
    @wrap_enum(redvox_api_m_pb2.RedvoxPacketM.StationInformation.StationMetrics.ScreenState)
    class ScreenState(enum.Enum):
        """
        Enumeration of possible screen states.
        """

        UNKNOWN_SCREEN_STATE: int = 0
        ON: int = 1
        OFF: int = 2
        HEADLESS: int = 3

    # noinspection Mypy
    @wrap_enum(redvox_api_m_pb2.RedvoxPacketM.StationInformation.StationMetrics.ScreenState)
    class MetricsRate(enum.Enum):
        """
        Enumeration for valid metric collection rates
        """

        UNKNOWN: int = 0
        ONCE_PER_SECOND: int = 1
        ONCE_PER_PACKET: int = 2

    class AppSettings(
        redvox.api1000.common.generic.ProtoBase[
            redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings
        ]
    ):
        """
        Represents a copy of the App's settings.
        """

        def __init__(
            self, proto: redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings
        ):
            super().__init__(proto)
            # noinspection Mypy
            # pylint: disable=E1101
            self._additional_input_sensors: redvox.api1000.common.generic.ProtoRepeatedMessage[
                InputSensorProto, InputSensor
            ] = redvox.api1000.common.generic.ProtoRepeatedMessage(
                proto,
                proto.additional_input_sensors,
                _ADDITIONAL_INPUT_SENSORS_FIELD_NAME,
                InputSensor.from_proto,
                InputSensor.into_proto,
            )

        @staticmethod
        def new() -> "AppSettings":
            """
            Creates a new, empty AppSettings instance
            :return: A new, empty AppSettings instance
            """
            return AppSettings(
                redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings()
            )

        def get_audio_sampling_rate(self) -> AudioSamplingRate:
            """
            :return: Returns the sampling rate provided in the settings.
            """
            return AudioSamplingRate(self.get_proto().audio_sampling_rate)

        def set_audio_sampling_rate(
            self, audio_sampling_rate: AudioSamplingRate
        ) -> "AppSettings":
            """
            Sets the audio sampling rate.
            :param audio_sampling_rate: Rate to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(
                audio_sampling_rate, [AudioSamplingRate]
            )

            self.get_proto().audio_sampling_rate = redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings.AudioSamplingRate.Value(
                audio_sampling_rate.name
            )
            return self

        def get_samples_per_window(self) -> float:
            """
            :return: The number of samples per window as defined in the app settings.
            """
            return self.get_proto().samples_per_window

        def set_samples_per_window(self, samples_per_window: float) -> "AppSettings":
            """
            Sets the number of samples per window for storage in the app settings.
            :param samples_per_window: Samples per window.
            :return: A modified instance of self.
            """
            redvox.api1000.common.typing.check_type(samples_per_window, [int, float])
            self.get_proto().samples_per_window = samples_per_window
            return self

        def get_audio_source_tuning(self) -> AudioSourceTuning:
            """
            :return: The AudioSourceTuning
            """
            return AudioSourceTuning(self.get_proto().audio_source_tuning)

        def set_audio_source_tuning(
            self, audio_source_tuning: AudioSourceTuning
        ) -> "AppSettings":
            """
            Sets the AudioSourceTuning.
            :param audio_source_tuning: Tuning to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(
                audio_source_tuning, [AudioSourceTuning]
            )

            self.get_proto().audio_source_tuning = redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings.AudioSourceTuning.Value(
                audio_source_tuning.name
            )
            return self

        def get_additional_input_sensors(
            self,
        ) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
            """
            :return: Additional input sensors specified in the settings.
            """
            return self._additional_input_sensors

        def set_additional_input_sensors(
            self,
            additional_input_sensors: redvox.api1000.common.generic.ProtoRepeatedMessage,
        ) -> "AppSettings":
            """
            Sets the additional input sensors.
            :param additional_input_sensors: Payload to set.
            :return: A modified instance of self.
            """
            common.check_type(
                additional_input_sensors,
                [redvox.api1000.common.generic.ProtoRepeatedMessage],
            )
            self._additional_input_sensors.clear_values()
            self._additional_input_sensors.append_values(
                additional_input_sensors.get_values()
            )
            return self

        def get_fft_overlap(self) -> FftOverlap:
            """
            :return: FFT overlap as specified in the settings
            """
            return FftOverlap(self.get_proto().fft_overlap)

        def set_fft_overlap(self, fft_overlap: FftOverlap) -> "AppSettings":
            """
            Sets the fft overlap in the settings
            :param fft_overlap: Overlap to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(fft_overlap, [FftOverlap])

            self.get_proto().fft_overlap = redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings.FftOverlap.Value(
                fft_overlap.name
            )
            return self

        def get_automatically_record(self) -> bool:
            """
            :return: Is automatically record set in the settings?
            """
            return self.get_proto().automatically_record

        def set_automatically_record(self, automatically_record: bool) -> "AppSettings":
            """
            Sets automatically record in the settings.
            :param automatically_record: Setting to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(automatically_record, [bool])
            self.get_proto().automatically_record = automatically_record
            return self

        def get_launch_at_power_up(self) -> bool:
            """
            :return: Is launch at power up set in settings?
            """
            return self.get_proto().launch_at_power_up

        def set_launch_at_power_up(self, launch_at_power_up: bool) -> "AppSettings":
            """
            Sets launch at power up in settings.
            :param launch_at_power_up: Setting to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(launch_at_power_up, [bool])
            self.get_proto().launch_at_power_up = launch_at_power_up
            return self

        def get_station_id(self) -> str:
            """
            :return: Station id provided in settings
            """
            return self.get_proto().station_id

        def set_station_id(self, station_id: str) -> "AppSettings":
            """
            Sets the station id in the settings.
            :param station_id: Station id to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(station_id, [str])
            self.get_proto().station_id = station_id
            return self

        def get_station_description(self) -> str:
            """
            :return: Station description set in settings.`
            """
            return self.get_proto().station_description

        def set_station_description(self, station_description: str) -> "AppSettings":
            """
            Sets the station description in the settings.
            :param station_description: Description to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(station_description, [str])
            self.get_proto().station_description = station_description
            return self

        def get_push_to_server(self) -> bool:
            """
            :return: Is push to server set in the settings?
            """
            return self.get_proto().push_to_server

        def set_push_to_server(self, push_to_server: bool) -> "AppSettings":
            """
            Sets push to server in the settings.
            :param push_to_server: Setting to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(push_to_server, [bool])
            self.get_proto().push_to_server = push_to_server
            return self

        def get_publish_data_as_private(self) -> bool:
            """
            :return: Is publish data as private set in the settings?
            """
            return self.get_proto().publish_data_as_private

        def set_publish_data_as_private(
            self, publish_data_as_private: bool
        ) -> "AppSettings":
            """
            Sets publish data as private in the settings.
            :param publish_data_as_private: Setting to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(publish_data_as_private, [bool])
            self.get_proto().publish_data_as_private = publish_data_as_private
            return self

        def get_scramble_audio_data(self) -> bool:
            """
            :return: Is scramble audio set in the settings?
            """
            return self.get_proto().scramble_audio_data

        def set_scramble_audio_data(self, scramble_audio_data: bool) -> "AppSettings":
            """
            Sets scramble audio in the settings.
            :param scramble_audio_data: Setting to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(scramble_audio_data, [bool])
            self.get_proto().scramble_audio_data = scramble_audio_data
            return self

        def get_provide_backfill(self) -> bool:
            """
            :return: Is provide backfill set in the settings?
            """
            return self.get_proto().provide_backfill

        def set_provide_backfill(self, provide_backfill: bool) -> "AppSettings":
            """
            Sets backfill in the settings.
            :param provide_backfill: Setting to set.
            :return: A modified instance of self.
            """
            redvox.api1000.common.typing.check_type(provide_backfill, [bool])
            self.get_proto().provide_backfill = provide_backfill
            return self

        def get_remove_sensor_dc_offset(self) -> bool:
            """
            :return: Is remove dc offset set in the settings?
            """
            return self.get_proto().remove_sensor_dc_offset

        def set_remove_sensor_dc_offset(
            self, remove_sensor_dc_offset: bool
        ) -> "AppSettings":
            """
            Sets remove DC offset in the settings.
            :param remove_sensor_dc_offset: Setting to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(remove_sensor_dc_offset, [bool])
            self.get_proto().remove_sensor_dc_offset = remove_sensor_dc_offset
            return self

        def get_use_custom_time_sync_server(self) -> bool:
            """
            :return: Is use custom sync server set in settings?
            """
            return self.get_proto().use_custom_time_sync_server

        def set_use_custom_time_sync_server(
            self, use_custom_time_sync_server: bool
        ) -> "AppSettings":
            """
            Sets use custom synch server in settings.
            :param use_custom_time_sync_server: Setting to set.
            :return: A modified instance of self.
            """
            redvox.api1000.common.typing.check_type(use_custom_time_sync_server, [bool])
            self.get_proto().use_custom_time_sync_server = use_custom_time_sync_server
            return self

        def get_time_sync_server_url(self) -> str:
            """
            :return: Custom synch url from settings.
            """
            return self.get_proto().time_sync_server_url

        def set_time_sync_server_url(self, time_sync_server_url: str) -> "AppSettings":
            """
            Sets the custom synch url in the settings.
            :param time_sync_server_url: URL to set.
            :return: A modified instance of self.
            """
            redvox.api1000.common.typing.check_type(time_sync_server_url, [str])
            self.get_proto().time_sync_server_url = time_sync_server_url
            return self

        def get_use_custom_data_server(self) -> bool:
            """
            :return: Is use custom data server set in settings?
            """
            return self.get_proto().use_custom_data_server

        def set_use_custom_data_server(self, use_custom_data_server: bool) -> "AppSettings":
            """
            Set use custom data server in settings.
            :param use_custom_data_server: Setting to set.
            :return: A modified instance of self.
            """
            redvox.api1000.common.typing.check_type(use_custom_data_server, [bool])
            self.get_proto().use_custom_data_server = use_custom_data_server
            return self

        def get_data_server_url(self) -> str:
            """
            :return: Custom data server url in settings.
            """
            return self.get_proto().data_server_url

        def set_data_server_url(self, data_server_url: str) -> "AppSettings":
            """
            Sets custom data server url in settings.
            :param data_server_url: Url to set.
            :return: A modified instance of self.
            """
            redvox.api1000.common.typing.check_type(data_server_url, [str])
            self.get_proto().data_server_url = data_server_url
            return self

        def get_use_custom_auth_server(self) -> bool:
            """
            :return: Use custom auth server set in settings?
            """
            return self.get_proto().use_custom_auth_server

        def set_use_custom_auth_server(self, use_custom_auth_server: bool) -> "AppSettings":
            """
            Set use custom auth server in settings.
            :param use_custom_auth_server: Setting to set.
            :return: Modified instance of self
            """
            redvox.api1000.common.typing.check_type(use_custom_auth_server, [bool])
            self.get_proto().use_custom_auth_server = use_custom_auth_server
            return self

        def get_auth_server_url(self) -> str:
            """
            :return: Custom auth server url from settings
            """
            return self.get_proto().auth_server_url

        def set_auth_server_url(self, auth_server_url: str) -> "AppSettings":
            """
            Set custom auth server url in settings.
            :param auth_server_url: Url to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(auth_server_url, [str])
            self.get_proto().auth_server_url = auth_server_url
            return self

        def get_auto_delete_data_files(self) -> bool:
            """
            :return: Auto delete files set in settings?
            """
            return self.get_proto().auto_delete_data_files

        def set_auto_delete_data_files(self, auto_delete_data_files: bool) -> "AppSettings":
            """
            Set auto delete data files in settings.
            :param auto_delete_data_files: Setting to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(auto_delete_data_files, [bool])
            self.get_proto().auto_delete_data_files = auto_delete_data_files
            return self

        def get_storage_space_allowance(self) -> float:
            """
            :return: Amount of storage space allowance set in settings.
            """
            return self.get_proto().storage_space_allowance

        def set_storage_space_allowance(
            self, storage_space_allowance: float
        ) -> "AppSettings":
            """
            Set storage space allowance in settings.
            :param storage_space_allowance: Allowance to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(storage_space_allowance, [int, float])

            self.get_proto().storage_space_allowance = storage_space_allowance
            return self

        def get_use_sd_card_for_data_storage(self) -> bool:
            """
            :return: Use SD card set in settings?
            """
            return self.get_proto().use_sd_card_for_data_storage

        def set_use_sd_card_for_data_storage(
            self, use_sd_card_for_data_storage: bool
        ) -> "AppSettings":
            """
            Set use SD card in settings.
            :param use_sd_card_for_data_storage: Setting to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(use_sd_card_for_data_storage, [bool])
            self.get_proto().use_sd_card_for_data_storage = use_sd_card_for_data_storage
            return self

        def get_use_location_services(self) -> bool:
            """
            :return: Use location services set in settings?
            """
            return self.get_proto().use_location_services

        def set_use_location_services(self, use_location_services: bool) -> "AppSettings":
            """
            Sets use location services in settings.
            :param use_location_services: Setting to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(use_location_services, [bool])
            self.get_proto().use_location_services = use_location_services
            return self

        def get_use_latitude(self) -> float:
            """
            :return: Custom latitude provided in settings.
            """
            return self.get_proto().use_latitude

        def set_use_latitude(self, use_latitude: float) -> "AppSettings":
            """
            Set custom latitude in settings.
            :param use_latitude: Latitude to set.
            :return: A modified instance of self.
            """
            redvox.api1000.common.typing.check_type(use_latitude, [int, float])

            self.get_proto().use_latitude = use_latitude
            return self

        def get_use_longitude(self) -> float:
            """
            :return: Custom longitude from settings.
            """
            return self.get_proto().use_longitude

        def set_use_longitude(self, use_longitude: float) -> "AppSettings":
            """
            Sets custom longitude in settings.
            :param use_longitude: Longitude to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(use_longitude, [int, float])

            self.get_proto().use_longitude = use_longitude
            return self

        def get_use_altitude(self) -> float:
            """
            :return: Custom altitude set in settings
            """
            return self.get_proto().use_altitude

        def set_use_altitude(self, use_altitude: float) -> "AppSettings":
            """
            Set custom altitude in settings.
            :param use_altitude: Altitude to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(use_altitude, [int, float])

            self.get_proto().use_altitude = use_altitude
            return self

        def get_metrics_rate(self) -> MetricsRate:
            """
            :return: Returns the metrics rate provided in the settings.
            """
            return MetricsRate(self.get_proto().metrics_rate)

        def set_metrics_rate(self, metrics_rate: MetricsRate) -> "AppSettings":
            """
            Sets the metrics rate.
            :param metrics_rate: Rate to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(metrics_rate, [MetricsRate])

            self.get_proto().metrics_rate = (
                redvox_api_m_pb2.RedvoxPacketM.StationInformation.MetricsRate.Value(
                    metrics_rate.name
                )
            )
            return self

    def validate_app_settings(app_settings: AppSettings) -> List[str]:
        """
        Validates the app settings.
        :param app_settings: App settings to validate
        :return: List of validation errors
        """
        errors_list = []
        if app_settings.get_audio_sampling_rate() not in AudioSamplingRate:
            errors_list.append("App settings audio sample rate is not a valid sample rate")
        if app_settings.get_station_id() == "":
            errors_list.append("App settings station id is missing")
        return errors_list

    # noinspection Mypy,DuplicatedCode
    @wrap_enum(redvox_api_m_pb2.RedvoxPacketM.StationInformation.StationMetrics.NetworkType)
    class NetworkType(enum.Enum):
        """
        Network type for station metrics
        """

        UNKNOWN_NETWORK: int = 0
        NO_NETWORK: int = 1
        WIFI: int = 2
        CELLULAR: int = 3
        WIRED: int = 4

    # noinspection Mypy
    @wrap_enum(
        redvox_api_m_pb2.RedvoxPacketM.StationInformation.StationMetrics.WifiWakeLock
    )
    class WifiWakeLock(enum.Enum):
        """
        WiFi wake lock states for station metrics
        """

        NONE: int = 0
        HIGH_PERF: int = 1
        LOW_LATENCY: int = 2
        OTHER: int = 3

    # noinspection Mypy
    @wrap_enum(
        redvox_api_m_pb2.RedvoxPacketM.StationInformation.StationMetrics.CellServiceState
    )
    class CellServiceState(enum.Enum):
        """
        Cell service state for station metrics
        """

        UNKNOWN: int = 0
        EMERGENCY: int = 1
        NOMINAL: int = 2
        OUT_OF_SERVICE: int = 3
        POWER_OFF: int = 4

    # noinspection Mypy
    @wrap_enum(redvox_api_m_pb2.RedvoxPacketM.StationInformation.StationMetrics.PowerState)
    class PowerState(enum.Enum):
        """
        Power state for station metrics
        """

        UNKNOWN_POWER_STATE: int = 0
        UNPLUGGED: int = 1
        CHARGING: int = 2
        CHARGED: int = 3

    class StationMetrics(
        redvox.api1000.common.generic.ProtoBase[
            redvox_api_m_pb2.RedvoxPacketM.StationInformation.StationMetrics
        ]
    ):
        """
        A collection of timestamps metrics relating to station state.
        """

        # noinspection Mypy
        def __init__(
            self,
            station_metrics_proto: redvox_api_m_pb2.RedvoxPacketM.StationInformation.StationMetrics,
        ):
            super().__init__(station_metrics_proto)
            self._timestamps = common.TimingPayload(
                station_metrics_proto.timestamps
            ).set_default_unit()
            # pylint: disable=E1101
            self._network_type: redvox.api1000.common.generic.ProtoRepeatedMessage = (
                redvox.api1000.common.generic.ProtoRepeatedMessage(
                    station_metrics_proto,
                    station_metrics_proto.network_type,
                    _NETWORK_TYPE_FIELD_NAME,
                    NetworkType.from_proto,
                    NetworkType.into_proto,
                )
            )
            # pylint: disable=E1101
            self._cell_service_state: redvox.api1000.common.generic.ProtoRepeatedMessage = (
                redvox.api1000.common.generic.ProtoRepeatedMessage(
                    station_metrics_proto,
                    station_metrics_proto.cell_service_state,
                    _CELL_SERVICE_STATE_FIELD_NAME,
                    CellServiceState.from_proto,
                    CellServiceState.into_proto,
                )
            )
            # noinspection PyTypeChecker
            self._network_strength: common.SamplePayload = common.SamplePayload(
                station_metrics_proto.network_strength
            ).set_unit(common.Unit.DECIBEL)
            # noinspection PyTypeChecker
            self._temperature: common.SamplePayload = common.SamplePayload(
                station_metrics_proto.temperature
            ).set_unit(common.Unit.DEGREES_CELSIUS)
            # noinspection PyTypeChecker
            self._battery: common.SamplePayload = common.SamplePayload(
                station_metrics_proto.battery
            ).set_unit(common.Unit.PERCENTAGE)
            # noinspection PyTypeChecker
            self._battery_current: common.SamplePayload = common.SamplePayload(
                station_metrics_proto.battery_current
            ).set_unit(common.Unit.MICROAMPERES)
            # noinspection PyTypeChecker
            self._available_ram: common.SamplePayload = common.SamplePayload(
                station_metrics_proto.available_ram
            ).set_unit(common.Unit.BYTE)
            # noinspection PyTypeChecker
            self._available_disk: common.SamplePayload = common.SamplePayload(
                station_metrics_proto.available_disk
            ).set_unit(common.Unit.BYTE)
            # noinspection PyTypeChecker
            self._cpu_utilization: common.SamplePayload = common.SamplePayload(
                station_metrics_proto.cpu_utilization
            ).set_unit(common.Unit.PERCENTAGE)
            # pylint: disable=E1101
            self._power_state: redvox.api1000.common.generic.ProtoRepeatedMessage = (
                redvox.api1000.common.generic.ProtoRepeatedMessage(
                    station_metrics_proto,
                    station_metrics_proto.power_state,
                    _POWER_STATE_FIELD_NAME,
                    PowerState.from_proto,
                    PowerState.into_proto,
                )
            )
            # pylint: disable=E1101
            self._wifi_wake_loc: redvox.api1000.common.generic.ProtoRepeatedMessage = (
                redvox.api1000.common.generic.ProtoRepeatedMessage(
                    station_metrics_proto,
                    station_metrics_proto.wifi_wake_lock,
                    _WIFI_WAKE_LOCK_FIELD_NAME,
                    WifiWakeLock.from_proto,
                    WifiWakeLock.into_proto,
                )
            )
            # pylint: disable=E1101
            self._screen_state: redvox.api1000.common.generic.ProtoRepeatedMessage = (
                redvox.api1000.common.generic.ProtoRepeatedMessage(
                    station_metrics_proto,
                    station_metrics_proto.screen_state,
                    _SCREEN_STATE_FIELD_NAME,
                    ScreenState.from_proto,
                    ScreenState.into_proto,
                )
            )
            # noinspection PyTypeChecker
            self._screen_brightness: common.SamplePayload = common.SamplePayload(
                station_metrics_proto.screen_brightness
            ).set_unit(common.Unit.PERCENTAGE)

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

        def get_timestamps(self) -> common.TimingPayload:
            """
            :return: Timestamps associated with each metric.
            """
            return self._timestamps

        def set_timestamps(self, timestamps: common.TimingPayload) -> "StationMetrics":
            """
            Sets the timing payload.
            :param timestamps: Payload to set.
            :return: A modified instance of self.
            """
            common.check_type(timestamps, [common.TimingPayload])
            self.get_proto().timestamps.CopyFrom(timestamps.get_proto())
            self._timestamps = common.TimingPayload(self.get_proto().timestamps)
            return self

        def get_network_type(self) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
            """
            :return: A payload of network types.
            """
            return self._network_type

        def set_network_type(
            self, network_type: redvox.api1000.common.generic.ProtoRepeatedMessage
        ) -> "StationMetrics":
            """
            Sets the network type payload.
            :param network_type: The payload to set.
            :return: A modified instance of self.
            """
            common.check_type(
                network_type, [redvox.api1000.common.generic.ProtoRepeatedMessage]
            )
            self._network_type.clear_values()
            self._network_type.append_values(network_type.get_values())
            return self

        def get_cell_service_state(
            self,
        ) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
            """
            :return: A payload of cell service state
            """
            return self._cell_service_state

        def set_cell_service_state(
            self, cell_service_state: redvox.api1000.common.generic.ProtoRepeatedMessage
        ) -> "StationMetrics":
            """
            Sets the cell service state payload.
            :param cell_service_state: The payload to set.
            :return: A modified instance of self.
            """
            common.check_type(
                cell_service_state, [redvox.api1000.common.generic.ProtoRepeatedMessage]
            )
            self._cell_service_state.clear_values()
            self._cell_service_state.append_values(cell_service_state.get_values())
            return self

        def get_network_strength(self) -> common.SamplePayload:
            """
            :return: A payload of network strengths
            """
            return self._network_strength

        def set_network_strength(
            self, network_strength: common.SamplePayload
        ) -> "StationMetrics":
            """
            Sets the network strength payload.
            :param network_strength: The payload to set.
            :return: A modified instance of self.
            """
            common.check_type(network_strength, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().network_strength.CopyFrom(network_strength.get_proto())
            self._network_strength = common.SamplePayload(self.get_proto().network_strength)
            return self

        def get_temperature(self) -> common.SamplePayload:
            """
            :return: A payload of temperatures
            """
            return self._temperature

        def set_temperature(self, temperature: common.SamplePayload) -> "StationMetrics":
            """
            Sets the temperature payload.
            :param temperature: The payload to set.
            :return: A modified instance of self.
            """
            common.check_type(temperature, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().temperature.CopyFrom(temperature.get_proto())
            self._temperature = common.SamplePayload(self.get_proto().temperature)
            return self

        def get_battery(self) -> common.SamplePayload:
            """
            :return: A payload of battery remaining
            """
            return self._battery

        def set_battery(self, battery: common.SamplePayload) -> "StationMetrics":
            """
            Sets the battery payload.
            :param battery: Payload to set.
            :return: A modified instance of self.
            """
            common.check_type(battery, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().battery.CopyFrom(battery.get_proto())
            self._battery = common.SamplePayload(self.get_proto().battery)
            return self

        def get_battery_current(self) -> common.SamplePayload:
            """
            :return: A payload of battery current
            """
            return self._battery_current

        def set_battery_current(
            self, battery_current: common.SamplePayload
        ) -> "StationMetrics":
            """
            Sets the battery current payload.
            :param battery_current: Payload to set.
            :return: A modified instance of self.
            """
            common.check_type(battery_current, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().battery_current.CopyFrom(battery_current.get_proto())
            self._battery_current = common.SamplePayload(self.get_proto().battery_current)
            return self

        def get_available_ram(self) -> common.SamplePayload:
            """
            :return: A payload of available RAM
            """
            return self._available_ram

        def set_available_ram(
            self, available_ram: common.SamplePayload
        ) -> "StationMetrics":
            """
            Sets the available ram payload.
            :param available_ram: Payload to set.
            :return: A modified instance of self.
            """
            common.check_type(available_ram, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().available_ram.CopyFrom(available_ram.get_proto())
            self._available_ram = common.SamplePayload(self.get_proto().available_ram)
            return self

        def get_available_disk(self) -> common.SamplePayload:
            """
            :return: A payload of available disk
            """
            return self._available_disk

        def set_available_disk(
            self, available_disk: common.SamplePayload
        ) -> "StationMetrics":
            """
            Sets the available disk payload.
            :param available_disk: Payload to set.
            :return: A modified instance of self.
            """
            common.check_type(available_disk, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().available_disk.CopyFrom(available_disk.get_proto())
            self._available_disk = common.SamplePayload(self.get_proto().available_disk)
            return self

        def get_cpu_utilization(self) -> common.SamplePayload:
            """
            :return: A payload CPU utilization
            """
            return self._cpu_utilization

        def set_cpu_utilization(
            self, cpu_utilization: common.SamplePayload
        ) -> "StationMetrics":
            """
            Sets the CPU utilization payload.
            :param cpu_utilization: The payload to set.
            :return: A modified instance of self.
            """
            common.check_type(cpu_utilization, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().cpu_utilization.CopyFrom(cpu_utilization.get_proto())
            self._cpu_utilization = common.SamplePayload(self.get_proto().cpu_utilization)
            return self

        def get_power_state(self) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
            """
            :return: A payload of power states
            """
            return self._power_state

        def set_power_state(
            self, power_state: redvox.api1000.common.generic.ProtoRepeatedMessage
        ) -> "StationMetrics":
            """
            Sets the power state payload.
            :param power_state: Payload to set.
            :return: A modified instance of self.
            """
            common.check_type(
                power_state, [redvox.api1000.common.generic.ProtoRepeatedMessage]
            )
            self._power_state.clear_values()
            self._power_state.append_values(power_state.get_values())
            return self

        def get_wifi_wake_loc(self) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
            """
            :return: A payload of Wifi wake lock states
            """
            return self._wifi_wake_loc

        def set_wifi_wake_loc(
            self, wifi_wake_loc: redvox.api1000.common.generic.ProtoRepeatedMessage
        ) -> "StationMetrics":
            """
            Sets the wifi wake lock payload.
            :param wifi_wake_loc: The wifi wake lock payload to set.
            :return: A modified instance of self.
            """
            common.check_type(
                wifi_wake_loc, [redvox.api1000.common.generic.ProtoRepeatedMessage]
            )
            self._wifi_wake_loc.clear_values()
            self._wifi_wake_loc.append_values(wifi_wake_loc.get_values())
            return self

        def get_screen_state(self) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
            """
            :return: A payload of screen states
            """
            return self._screen_state

        def set_screen_state(
            self, screen_state: redvox.api1000.common.generic.ProtoRepeatedMessage
        ) -> "StationMetrics":
            """
            Sets the screen state payload.
            :param screen_state: ScreenState repeated message to set.
            :return: A modified instance of self.
            """
            common.check_type(
                screen_state, [redvox.api1000.common.generic.ProtoRepeatedMessage]
            )
            self._screen_state.clear_values()
            self._screen_state.append_values(screen_state.get_values())
            return self

        def get_screen_brightness(self) -> common.SamplePayload:
            """
            :return: A payload of the screens brightness.
            """
            return self._screen_brightness

        def set_screen_brightness(
            self, screen_brightness: common.SamplePayload
        ) -> "StationMetrics":
            """
            Sets the screen brightness payload.
            :param screen_brightness: A SamplePayload containing screen brightness.
            :return: A modified instance of self.
            """
            common.check_type(screen_brightness, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().screen_brightness.CopyFrom(screen_brightness.get_proto())
            self._screen_brightness = common.SamplePayload(
                self.get_proto().screen_brightness
            )
            return self

    class ServiceUrls(
        redvox.api1000.common.generic.ProtoBase[
            redvox_api_m_pb2.RedvoxPacketM.StationInformation.ServiceUrls
        ]
    ):
        """
        A collection of URLs utilized while collecting, authenticating, and transmitting the data.
        """

        def __init__(
            self,
            service_urls_proto: redvox_api_m_pb2.RedvoxPacketM.StationInformation.ServiceUrls,
        ):
            super().__init__(service_urls_proto)

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

        def get_auth_server(self) -> str:
            """
            :return: The authentication server URL.
            """
            return self.get_proto().auth_server

        def set_auth_server(self, _auth_server: str) -> "ServiceUrls":
            """
            Sets the authentication server url
            :param _auth_server: Url to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(_auth_server, [str])
            self.get_proto().auth_server = _auth_server
            return self

        def get_synch_server(self) -> str:
            """
            :return: The time synchronization URL.
            """
            return self.get_proto().synch_server

        def set_synch_server(self, _synch_server: str) -> "ServiceUrls":
            """
            Sets the time synchronization URL.
            :param _synch_server: URL to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(_synch_server, [str])
            self.get_proto().synch_server = _synch_server
            return self

        def get_acquisition_server(self) -> str:
            """
            :return: The data acquisition server URL
            """
            return self.get_proto().acquisition_server

        def set_acquisition_server(self, _acquisition_server: str) -> "ServiceUrls":
            """
            Sets the data acquisition server URL
            :param _acquisition_server: URL to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(_acquisition_server, [str])
            self.get_proto().acquisition_server = _acquisition_server
            return self

    def validate_station_metrics(station_metrics: StationMetrics) -> List[str]:
        """
        Validates the station metrics.
        :param station_metrics: Metrics to validate.
        :return: A list of validation errors.
        """
        # only check if timestamps are valid right now
        # todo: determine if other stuff needs to be validated as well
        return common.validate_timing_payload(station_metrics.get_timestamps())

    # noinspection Mypy
    @wrap_enum(redvox_api_m_pb2.RedvoxPacketM.StationInformation.OsType)
    class OsType(enum.Enum):
        """
        Type-safe OS enumeration for station info
        """

        UNKNOWN_OS: int = 0
        ANDROID: int = 1
        IOS: int = 2
        OSX: int = 3
        LINUX: int = 4
        WINDOWS: int = 5

    class StationInformation(
        redvox.api1000.common.generic.ProtoBase[
            redvox_api_m_pb2.RedvoxPacketM.StationInformation
        ]
    ):
        """
        A collection of station related metadata, settings, and metrics.
        """

        def __init__(
            self,
            station_information_proto: redvox_api_m_pb2.RedvoxPacketM.StationInformation,
        ):
            super().__init__(station_information_proto)
            self._app_settings: AppSettings = AppSettings(
                station_information_proto.app_settings
            )
            self._station_metrics: StationMetrics = StationMetrics(
                station_information_proto.station_metrics
            )
            self._service_urls: ServiceUrls = ServiceUrls(
                station_information_proto.service_urls
            )

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

        def get_id(self) -> str:
            """
            :return: The station id
            """
            return self.get_proto().id

        def set_id(self, _id: str) -> "StationInformation":
            """
            Sets the station id
            :param _id: Id to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(_id, [str])
            self.get_proto().id = _id
            return self

        def get_uuid(self) -> str:
            """
            :return: The station UUID
            """
            return self.get_proto().uuid

        def set_uuid(self, uuid: str) -> "StationInformation":
            """
            Sets the station uuid.
            :param uuid: uuid to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(uuid, [str])
            self.get_proto().uuid = uuid
            return self

        def get_description(self) -> str:
            """
            :return: The station's description.
            """
            return self.get_proto().description

        def set_description(self, description: str) -> "StationInformation":
            """
            Sets the station's description
            :param description: Description of the station
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(description, [str])
            self.get_proto().description = description
            return self

        def get_auth_id(self) -> str:
            """
            :return: The station's authentication id
            """
            return self.get_proto().auth_id

        def set_auth_id(self, auth_id: str) -> "StationInformation":
            """
            Sets the station's authentication id
            :param auth_id: Authentication id to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(auth_id, [str])
            self.get_proto().auth_id = auth_id
            return self

        def get_make(self) -> str:
            """
            :return: The station's make
            """
            return self.get_proto().make

        def set_make(self, make: str) -> "StationInformation":
            """
            Sets the station's make
            :param make: Make to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(make, [str])
            self.get_proto().make = make
            return self

        def get_model(self) -> str:
            """
            :return: The station's model
            """
            return self.get_proto().model

        def set_model(self, model: str) -> "StationInformation":
            """
            Sets the station's model
            :param model: Model to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(model, [str])
            self.get_proto().model = model
            return self

        def get_os(self) -> OsType:
            """
            :return: The station's OS
            """
            return OsType(self.get_proto().os)

        # pylint: disable=C0103
        def set_os(self, os: OsType) -> "StationInformation":
            """
            Sets the station's OS
            :param os: OS to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(os, [OsType])
            self.get_proto().os = (
                redvox_api_m_pb2.RedvoxPacketM.StationInformation.OsType.Value(os.name)
            )
            return self

        def get_os_version(self) -> str:
            """
            :return: The station's OS version
            """
            return self.get_proto().os_version

        def set_os_version(self, os_version: str) -> "StationInformation":
            """
            Sets the station's OS version
            :param os_version: OS version to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(os_version, [str])
            self.get_proto().os_version = os_version
            return self

        def get_app_version(self) -> str:
            """
            :return: The station's app version
            """
            return self.get_proto().app_version

        def set_app_version(self, app_version: str) -> "StationInformation":
            """
            Sets the station's app version.
            :param app_version: App version to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(app_version, [str])
            self.get_proto().app_version = app_version
            return self

        def get_is_private(self) -> bool:
            """
            :return: If this station was recording privately.
            """
            return self.get_proto().is_private

        def set_is_private(self, is_private: bool) -> "StationInformation":
            """
            Sets if this station is recording privately.
            :param is_private: True if private, False otherwise
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(is_private, [bool])
            self.get_proto().is_private = is_private
            return self

        def get_app_settings(self) -> AppSettings:
            """
            :return: This station's copy of its settings
            """
            return self._app_settings

        def set_app_settings(self, app_settings: AppSettings) -> "StationInformation":
            """
            Sets the AppSettings.
            :param app_settings: AppSettings to set.
            :return: A modified instance of self.
            """
            common.check_type(app_settings, [AppSettings])
            self.get_proto().app_settings.CopyFrom(app_settings.get_proto())
            self._app_settings = AppSettings(self.get_proto().app_settings)
            return self

        def get_station_metrics(self) -> StationMetrics:
            """
            :return: Metrics associated with this station.
            """
            return self._station_metrics

        def set_station_metrics(
            self, station_metrics: StationMetrics
        ) -> "StationInformation":
            """
            Sets the StationMetrics.
            :param station_metrics: StationMetrics to set.
            :return: A modified instance of self.
            """
            common.check_type(station_metrics, [StationMetrics])
            self.get_proto().station_metrics.CopyFrom(station_metrics.get_proto())
            self._station_metrics = StationMetrics(self.get_proto().station_metrics)
            return self

        def get_service_urls(self) -> ServiceUrls:
            """
            :return: URLs used to service this station.
            """
            return self._service_urls

        def set_service_urls(self, service_urls: ServiceUrls) -> "StationInformation":
            """
            Sets the service urls.
            :param service_urls: ServiceUrls to set.
            :return: A modified instance of self.
            """
            common.check_type(service_urls, [ServiceUrls])
            self.get_proto().service_urls.CopyFrom(service_urls.get_proto())
            self._service_urls = ServiceUrls(self.get_proto().service_urls)
            return self

    def validate_station_information(station_info: StationInformation) -> List[str]:
        """
        Validates station information.
        :param station_info: Station information to validate.
        :return: A list of validation errors.
        """
        errors_list = validate_app_settings(station_info.get_app_settings())
        errors_list.extend(validate_station_metrics(station_info.get_station_metrics()))
        if station_info.get_id() == "":
            errors_list.append("Station information station id missing")
        if station_info.get_uuid() == "":
            errors_list.append("Station information station uuid missing")
        return errors_list

## Functions

`def validate_app_settings(app_settings: AppSettings) ‑> List[str]`

  Validates the app settings. :param app_settings: App settings to validate :return: List of validation errors

  Expand source code

      def validate_app_settings(app_settings: AppSettings) -> List[str]:
          """
          Validates the app settings.
          :param app_settings: App settings to validate
          :return: List of validation errors
          """
          errors_list = []
          if app_settings.get_audio_sampling_rate() not in AudioSamplingRate:
              errors_list.append("App settings audio sample rate is not a valid sample rate")
          if app_settings.get_station_id() == "":
              errors_list.append("App settings station id is missing")
          return errors_list

`def validate_station_information(station_info: StationInformation) ‑> List[str]`

  Validates station information. :param station_info: Station information to validate. :return: A list of validation errors.

  Expand source code

      def validate_station_information(station_info: StationInformation) -> List[str]:
          """
          Validates station information.
          :param station_info: Station information to validate.
          :return: A list of validation errors.
          """
          errors_list = validate_app_settings(station_info.get_app_settings())
          errors_list.extend(validate_station_metrics(station_info.get_station_metrics()))
          if station_info.get_id() == "":
              errors_list.append("Station information station id missing")
          if station_info.get_uuid() == "":
              errors_list.append("Station information station uuid missing")
          return errors_list

`def validate_station_metrics(station_metrics: StationMetrics) ‑> List[str]`

  Validates the station metrics. :param station_metrics: Metrics to validate. :return: A list of validation errors.

  Expand source code

      def validate_station_metrics(station_metrics: StationMetrics) -> List[str]:
          """
          Validates the station metrics.
          :param station_metrics: Metrics to validate.
          :return: A list of validation errors.
          """
          # only check if timestamps are valid right now
          # todo: determine if other stuff needs to be validated as well
          return common.validate_timing_payload(station_metrics.get_timestamps())

## Classes

`class AppSettings (proto: src.redvox_api_m.redvox_api_m_pb2.AppSettings)`

  Represents a copy of the App's settings.

  Expand source code

      class AppSettings(
          redvox.api1000.common.generic.ProtoBase[
              redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings
          ]
      ):
          """
          Represents a copy of the App's settings.
          """

          def __init__(
              self, proto: redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings
          ):
              super().__init__(proto)
              # noinspection Mypy
              # pylint: disable=E1101
              self._additional_input_sensors: redvox.api1000.common.generic.ProtoRepeatedMessage[
                  InputSensorProto, InputSensor
              ] = redvox.api1000.common.generic.ProtoRepeatedMessage(
                  proto,
                  proto.additional_input_sensors,
                  _ADDITIONAL_INPUT_SENSORS_FIELD_NAME,
                  InputSensor.from_proto,
                  InputSensor.into_proto,
              )

          @staticmethod
          def new() -> "AppSettings":
              """
              Creates a new, empty AppSettings instance
              :return: A new, empty AppSettings instance
              """
              return AppSettings(
                  redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings()
              )

          def get_audio_sampling_rate(self) -> AudioSamplingRate:
              """
              :return: Returns the sampling rate provided in the settings.
              """
              return AudioSamplingRate(self.get_proto().audio_sampling_rate)

          def set_audio_sampling_rate(
              self, audio_sampling_rate: AudioSamplingRate
          ) -> "AppSettings":
              """
              Sets the audio sampling rate.
              :param audio_sampling_rate: Rate to set.
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(
                  audio_sampling_rate, [AudioSamplingRate]
              )

              self.get_proto().audio_sampling_rate = redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings.AudioSamplingRate.Value(
                  audio_sampling_rate.name
              )
              return self

          def get_samples_per_window(self) -> float:
              """
              :return: The number of samples per window as defined in the app settings.
              """
              return self.get_proto().samples_per_window

          def set_samples_per_window(self, samples_per_window: float) -> "AppSettings":
              """
              Sets the number of samples per window for storage in the app settings.
              :param samples_per_window: Samples per window.
              :return: A modified instance of self.
              """
              redvox.api1000.common.typing.check_type(samples_per_window, [int, float])
              self.get_proto().samples_per_window = samples_per_window
              return self

          def get_audio_source_tuning(self) -> AudioSourceTuning:
              """
              :return: The AudioSourceTuning
              """
              return AudioSourceTuning(self.get_proto().audio_source_tuning)

          def set_audio_source_tuning(
              self, audio_source_tuning: AudioSourceTuning
          ) -> "AppSettings":
              """
              Sets the AudioSourceTuning.
              :param audio_source_tuning: Tuning to set.
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(
                  audio_source_tuning, [AudioSourceTuning]
              )

              self.get_proto().audio_source_tuning = redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings.AudioSourceTuning.Value(
                  audio_source_tuning.name
              )
              return self

          def get_additional_input_sensors(
              self,
          ) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
              """
              :return: Additional input sensors specified in the settings.
              """
              return self._additional_input_sensors

          def set_additional_input_sensors(
              self,
              additional_input_sensors: redvox.api1000.common.generic.ProtoRepeatedMessage,
          ) -> "AppSettings":
              """
              Sets the additional input sensors.
              :param additional_input_sensors: Payload to set.
              :return: A modified instance of self.
              """
              common.check_type(
                  additional_input_sensors,
                  [redvox.api1000.common.generic.ProtoRepeatedMessage],
              )
              self._additional_input_sensors.clear_values()
              self._additional_input_sensors.append_values(
                  additional_input_sensors.get_values()
              )
              return self

          def get_fft_overlap(self) -> FftOverlap:
              """
              :return: FFT overlap as specified in the settings
              """
              return FftOverlap(self.get_proto().fft_overlap)

          def set_fft_overlap(self, fft_overlap: FftOverlap) -> "AppSettings":
              """
              Sets the fft overlap in the settings
              :param fft_overlap: Overlap to set
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(fft_overlap, [FftOverlap])

              self.get_proto().fft_overlap = redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings.FftOverlap.Value(
                  fft_overlap.name
              )
              return self

          def get_automatically_record(self) -> bool:
              """
              :return: Is automatically record set in the settings?
              """
              return self.get_proto().automatically_record

          def set_automatically_record(self, automatically_record: bool) -> "AppSettings":
              """
              Sets automatically record in the settings.
              :param automatically_record: Setting to set.
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(automatically_record, [bool])
              self.get_proto().automatically_record = automatically_record
              return self

          def get_launch_at_power_up(self) -> bool:
              """
              :return: Is launch at power up set in settings?
              """
              return self.get_proto().launch_at_power_up

          def set_launch_at_power_up(self, launch_at_power_up: bool) -> "AppSettings":
              """
              Sets launch at power up in settings.
              :param launch_at_power_up: Setting to set
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(launch_at_power_up, [bool])
              self.get_proto().launch_at_power_up = launch_at_power_up
              return self

          def get_station_id(self) -> str:
              """
              :return: Station id provided in settings
              """
              return self.get_proto().station_id

          def set_station_id(self, station_id: str) -> "AppSettings":
              """
              Sets the station id in the settings.
              :param station_id: Station id to set.
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(station_id, [str])
              self.get_proto().station_id = station_id
              return self

          def get_station_description(self) -> str:
              """
              :return: Station description set in settings.`
              """
              return self.get_proto().station_description

          def set_station_description(self, station_description: str) -> "AppSettings":
              """
              Sets the station description in the settings.
              :param station_description: Description to set.
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(station_description, [str])
              self.get_proto().station_description = station_description
              return self

          def get_push_to_server(self) -> bool:
              """
              :return: Is push to server set in the settings?
              """
              return self.get_proto().push_to_server

          def set_push_to_server(self, push_to_server: bool) -> "AppSettings":
              """
              Sets push to server in the settings.
              :param push_to_server: Setting to set.
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(push_to_server, [bool])
              self.get_proto().push_to_server = push_to_server
              return self

          def get_publish_data_as_private(self) -> bool:
              """
              :return: Is publish data as private set in the settings?
              """
              return self.get_proto().publish_data_as_private

          def set_publish_data_as_private(
              self, publish_data_as_private: bool
          ) -> "AppSettings":
              """
              Sets publish data as private in the settings.
              :param publish_data_as_private: Setting to set
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(publish_data_as_private, [bool])
              self.get_proto().publish_data_as_private = publish_data_as_private
              return self

          def get_scramble_audio_data(self) -> bool:
              """
              :return: Is scramble audio set in the settings?
              """
              return self.get_proto().scramble_audio_data

          def set_scramble_audio_data(self, scramble_audio_data: bool) -> "AppSettings":
              """
              Sets scramble audio in the settings.
              :param scramble_audio_data: Setting to set.
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(scramble_audio_data, [bool])
              self.get_proto().scramble_audio_data = scramble_audio_data
              return self

          def get_provide_backfill(self) -> bool:
              """
              :return: Is provide backfill set in the settings?
              """
              return self.get_proto().provide_backfill

          def set_provide_backfill(self, provide_backfill: bool) -> "AppSettings":
              """
              Sets backfill in the settings.
              :param provide_backfill: Setting to set.
              :return: A modified instance of self.
              """
              redvox.api1000.common.typing.check_type(provide_backfill, [bool])
              self.get_proto().provide_backfill = provide_backfill
              return self

          def get_remove_sensor_dc_offset(self) -> bool:
              """
              :return: Is remove dc offset set in the settings?
              """
              return self.get_proto().remove_sensor_dc_offset

          def set_remove_sensor_dc_offset(
              self, remove_sensor_dc_offset: bool
          ) -> "AppSettings":
              """
              Sets remove DC offset in the settings.
              :param remove_sensor_dc_offset: Setting to set.
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(remove_sensor_dc_offset, [bool])
              self.get_proto().remove_sensor_dc_offset = remove_sensor_dc_offset
              return self

          def get_use_custom_time_sync_server(self) -> bool:
              """
              :return: Is use custom sync server set in settings?
              """
              return self.get_proto().use_custom_time_sync_server

          def set_use_custom_time_sync_server(
              self, use_custom_time_sync_server: bool
          ) -> "AppSettings":
              """
              Sets use custom synch server in settings.
              :param use_custom_time_sync_server: Setting to set.
              :return: A modified instance of self.
              """
              redvox.api1000.common.typing.check_type(use_custom_time_sync_server, [bool])
              self.get_proto().use_custom_time_sync_server = use_custom_time_sync_server
              return self

          def get_time_sync_server_url(self) -> str:
              """
              :return: Custom synch url from settings.
              """
              return self.get_proto().time_sync_server_url

          def set_time_sync_server_url(self, time_sync_server_url: str) -> "AppSettings":
              """
              Sets the custom synch url in the settings.
              :param time_sync_server_url: URL to set.
              :return: A modified instance of self.
              """
              redvox.api1000.common.typing.check_type(time_sync_server_url, [str])
              self.get_proto().time_sync_server_url = time_sync_server_url
              return self

          def get_use_custom_data_server(self) -> bool:
              """
              :return: Is use custom data server set in settings?
              """
              return self.get_proto().use_custom_data_server

          def set_use_custom_data_server(self, use_custom_data_server: bool) -> "AppSettings":
              """
              Set use custom data server in settings.
              :param use_custom_data_server: Setting to set.
              :return: A modified instance of self.
              """
              redvox.api1000.common.typing.check_type(use_custom_data_server, [bool])
              self.get_proto().use_custom_data_server = use_custom_data_server
              return self

          def get_data_server_url(self) -> str:
              """
              :return: Custom data server url in settings.
              """
              return self.get_proto().data_server_url

          def set_data_server_url(self, data_server_url: str) -> "AppSettings":
              """
              Sets custom data server url in settings.
              :param data_server_url: Url to set.
              :return: A modified instance of self.
              """
              redvox.api1000.common.typing.check_type(data_server_url, [str])
              self.get_proto().data_server_url = data_server_url
              return self

          def get_use_custom_auth_server(self) -> bool:
              """
              :return: Use custom auth server set in settings?
              """
              return self.get_proto().use_custom_auth_server

          def set_use_custom_auth_server(self, use_custom_auth_server: bool) -> "AppSettings":
              """
              Set use custom auth server in settings.
              :param use_custom_auth_server: Setting to set.
              :return: Modified instance of self
              """
              redvox.api1000.common.typing.check_type(use_custom_auth_server, [bool])
              self.get_proto().use_custom_auth_server = use_custom_auth_server
              return self

          def get_auth_server_url(self) -> str:
              """
              :return: Custom auth server url from settings
              """
              return self.get_proto().auth_server_url

          def set_auth_server_url(self, auth_server_url: str) -> "AppSettings":
              """
              Set custom auth server url in settings.
              :param auth_server_url: Url to set
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(auth_server_url, [str])
              self.get_proto().auth_server_url = auth_server_url
              return self

          def get_auto_delete_data_files(self) -> bool:
              """
              :return: Auto delete files set in settings?
              """
              return self.get_proto().auto_delete_data_files

          def set_auto_delete_data_files(self, auto_delete_data_files: bool) -> "AppSettings":
              """
              Set auto delete data files in settings.
              :param auto_delete_data_files: Setting to set.
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(auto_delete_data_files, [bool])
              self.get_proto().auto_delete_data_files = auto_delete_data_files
              return self

          def get_storage_space_allowance(self) -> float:
              """
              :return: Amount of storage space allowance set in settings.
              """
              return self.get_proto().storage_space_allowance

          def set_storage_space_allowance(
              self, storage_space_allowance: float
          ) -> "AppSettings":
              """
              Set storage space allowance in settings.
              :param storage_space_allowance: Allowance to set.
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(storage_space_allowance, [int, float])

              self.get_proto().storage_space_allowance = storage_space_allowance
              return self

          def get_use_sd_card_for_data_storage(self) -> bool:
              """
              :return: Use SD card set in settings?
              """
              return self.get_proto().use_sd_card_for_data_storage

          def set_use_sd_card_for_data_storage(
              self, use_sd_card_for_data_storage: bool
          ) -> "AppSettings":
              """
              Set use SD card in settings.
              :param use_sd_card_for_data_storage: Setting to set.
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(use_sd_card_for_data_storage, [bool])
              self.get_proto().use_sd_card_for_data_storage = use_sd_card_for_data_storage
              return self

          def get_use_location_services(self) -> bool:
              """
              :return: Use location services set in settings?
              """
              return self.get_proto().use_location_services

          def set_use_location_services(self, use_location_services: bool) -> "AppSettings":
              """
              Sets use location services in settings.
              :param use_location_services: Setting to set.
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(use_location_services, [bool])
              self.get_proto().use_location_services = use_location_services
              return self

          def get_use_latitude(self) -> float:
              """
              :return: Custom latitude provided in settings.
              """
              return self.get_proto().use_latitude

          def set_use_latitude(self, use_latitude: float) -> "AppSettings":
              """
              Set custom latitude in settings.
              :param use_latitude: Latitude to set.
              :return: A modified instance of self.
              """
              redvox.api1000.common.typing.check_type(use_latitude, [int, float])

              self.get_proto().use_latitude = use_latitude
              return self

          def get_use_longitude(self) -> float:
              """
              :return: Custom longitude from settings.
              """
              return self.get_proto().use_longitude

          def set_use_longitude(self, use_longitude: float) -> "AppSettings":
              """
              Sets custom longitude in settings.
              :param use_longitude: Longitude to set.
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(use_longitude, [int, float])

              self.get_proto().use_longitude = use_longitude
              return self

          def get_use_altitude(self) -> float:
              """
              :return: Custom altitude set in settings
              """
              return self.get_proto().use_altitude

          def set_use_altitude(self, use_altitude: float) -> "AppSettings":
              """
              Set custom altitude in settings.
              :param use_altitude: Altitude to set.
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(use_altitude, [int, float])

              self.get_proto().use_altitude = use_altitude
              return self

          def get_metrics_rate(self) -> MetricsRate:
              """
              :return: Returns the metrics rate provided in the settings.
              """
              return MetricsRate(self.get_proto().metrics_rate)

          def set_metrics_rate(self, metrics_rate: MetricsRate) -> "AppSettings":
              """
              Sets the metrics rate.
              :param metrics_rate: Rate to set.
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(metrics_rate, [MetricsRate])

              self.get_proto().metrics_rate = (
                  redvox_api_m_pb2.RedvoxPacketM.StationInformation.MetricsRate.Value(
                      metrics_rate.name
                  )
              )
              return self

  ### Ancestors

  - ProtoBase
  - typing.Generic

  ### Static methods

  `def new() ‑> AppSettings`

    Creates a new, empty AppSettings instance :return: A new, empty AppSettings instance

    Expand source code

        @staticmethod
        def new() -> "AppSettings":
            """
            Creates a new, empty AppSettings instance
            :return: A new, empty AppSettings instance
            """
            return AppSettings(
                redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings()
            )

  ### Methods

  `def get_additional_input_sensors(self) ‑> ProtoRepeatedMessage`

    :return: Additional input sensors specified in the settings.

    Expand source code

        def get_additional_input_sensors(
            self,
        ) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
            """
            :return: Additional input sensors specified in the settings.
            """
            return self._additional_input_sensors

  `def get_audio_sampling_rate(self) ‑> AudioSamplingRate`

    :return: Returns the sampling rate provided in the settings.

    Expand source code

        def get_audio_sampling_rate(self) -> AudioSamplingRate:
            """
            :return: Returns the sampling rate provided in the settings.
            """
            return AudioSamplingRate(self.get_proto().audio_sampling_rate)

  `def get_audio_source_tuning(self) ‑> AudioSourceTuning`

    :return: The AudioSourceTuning

    Expand source code

        def get_audio_source_tuning(self) -> AudioSourceTuning:
            """
            :return: The AudioSourceTuning
            """
            return AudioSourceTuning(self.get_proto().audio_source_tuning)

  `def get_auth_server_url(self) ‑> str`

    :return: Custom auth server url from settings

    Expand source code

        def get_auth_server_url(self) -> str:
            """
            :return: Custom auth server url from settings
            """
            return self.get_proto().auth_server_url

  `def get_auto_delete_data_files(self) ‑> bool`

    :return: Auto delete files set in settings?

    Expand source code

        def get_auto_delete_data_files(self) -> bool:
            """
            :return: Auto delete files set in settings?
            """
            return self.get_proto().auto_delete_data_files

  `def get_automatically_record(self) ‑> bool`

    :return: Is automatically record set in the settings?

    Expand source code

        def get_automatically_record(self) -> bool:
            """
            :return: Is automatically record set in the settings?
            """
            return self.get_proto().automatically_record

  `def get_data_server_url(self) ‑> str`

    :return: Custom data server url in settings.

    Expand source code

        def get_data_server_url(self) -> str:
            """
            :return: Custom data server url in settings.
            """
            return self.get_proto().data_server_url

  `def get_fft_overlap(self) ‑> FftOverlap`

    :return: FFT overlap as specified in the settings

    Expand source code

        def get_fft_overlap(self) -> FftOverlap:
            """
            :return: FFT overlap as specified in the settings
            """
            return FftOverlap(self.get_proto().fft_overlap)

  `def get_launch_at_power_up(self) ‑> bool`

    :return: Is launch at power up set in settings?

    Expand source code

        def get_launch_at_power_up(self) -> bool:
            """
            :return: Is launch at power up set in settings?
            """
            return self.get_proto().launch_at_power_up

  `def get_metrics_rate(self) ‑> MetricsRate`

    :return: Returns the metrics rate provided in the settings.

    Expand source code

        def get_metrics_rate(self) -> MetricsRate:
            """
            :return: Returns the metrics rate provided in the settings.
            """
            return MetricsRate(self.get_proto().metrics_rate)

  `def get_provide_backfill(self) ‑> bool`

    :return: Is provide backfill set in the settings?

    Expand source code

        def get_provide_backfill(self) -> bool:
            """
            :return: Is provide backfill set in the settings?
            """
            return self.get_proto().provide_backfill

  `def get_publish_data_as_private(self) ‑> bool`

    :return: Is publish data as private set in the settings?

    Expand source code

        def get_publish_data_as_private(self) -> bool:
            """
            :return: Is publish data as private set in the settings?
            """
            return self.get_proto().publish_data_as_private

  `def get_push_to_server(self) ‑> bool`

    :return: Is push to server set in the settings?

    Expand source code

        def get_push_to_server(self) -> bool:
            """
            :return: Is push to server set in the settings?
            """
            return self.get_proto().push_to_server

  `def get_remove_sensor_dc_offset(self) ‑> bool`

    :return: Is remove dc offset set in the settings?

    Expand source code

        def get_remove_sensor_dc_offset(self) -> bool:
            """
            :return: Is remove dc offset set in the settings?
            """
            return self.get_proto().remove_sensor_dc_offset

  `def get_samples_per_window(self) ‑> float`

    :return: The number of samples per window as defined in the app settings.

    Expand source code

        def get_samples_per_window(self) -> float:
            """
            :return: The number of samples per window as defined in the app settings.
            """
            return self.get_proto().samples_per_window

  `def get_scramble_audio_data(self) ‑> bool`

    :return: Is scramble audio set in the settings?

    Expand source code

        def get_scramble_audio_data(self) -> bool:
            """
            :return: Is scramble audio set in the settings?
            """
            return self.get_proto().scramble_audio_data

  `def get_station_description(self) ‑> str`

    :return: Station description set in settings.`

    Expand source code

        def get_station_description(self) -> str:
            """
            :return: Station description set in settings.`
            """
            return self.get_proto().station_description

  `def get_station_id(self) ‑> str`

    :return: Station id provided in settings

    Expand source code

        def get_station_id(self) -> str:
            """
            :return: Station id provided in settings
            """
            return self.get_proto().station_id

  `def get_storage_space_allowance(self) ‑> float`

    :return: Amount of storage space allowance set in settings.

    Expand source code

        def get_storage_space_allowance(self) -> float:
            """
            :return: Amount of storage space allowance set in settings.
            """
            return self.get_proto().storage_space_allowance

  `def get_time_sync_server_url(self) ‑> str`

    :return: Custom synch url from settings.

    Expand source code

        def get_time_sync_server_url(self) -> str:
            """
            :return: Custom synch url from settings.
            """
            return self.get_proto().time_sync_server_url

  `def get_use_altitude(self) ‑> float`

    :return: Custom altitude set in settings

    Expand source code

        def get_use_altitude(self) -> float:
            """
            :return: Custom altitude set in settings
            """
            return self.get_proto().use_altitude

  `def get_use_custom_auth_server(self) ‑> bool`

    :return: Use custom auth server set in settings?

    Expand source code

        def get_use_custom_auth_server(self) -> bool:
            """
            :return: Use custom auth server set in settings?
            """
            return self.get_proto().use_custom_auth_server

  `def get_use_custom_data_server(self) ‑> bool`

    :return: Is use custom data server set in settings?

    Expand source code

        def get_use_custom_data_server(self) -> bool:
            """
            :return: Is use custom data server set in settings?
            """
            return self.get_proto().use_custom_data_server

  `def get_use_custom_time_sync_server(self) ‑> bool`

    :return: Is use custom sync server set in settings?

    Expand source code

        def get_use_custom_time_sync_server(self) -> bool:
            """
            :return: Is use custom sync server set in settings?
            """
            return self.get_proto().use_custom_time_sync_server

  `def get_use_latitude(self) ‑> float`

    :return: Custom latitude provided in settings.

    Expand source code

        def get_use_latitude(self) -> float:
            """
            :return: Custom latitude provided in settings.
            """
            return self.get_proto().use_latitude

  `def get_use_location_services(self) ‑> bool`

    :return: Use location services set in settings?

    Expand source code

        def get_use_location_services(self) -> bool:
            """
            :return: Use location services set in settings?
            """
            return self.get_proto().use_location_services

  `def get_use_longitude(self) ‑> float`

    :return: Custom longitude from settings.

    Expand source code

        def get_use_longitude(self) -> float:
            """
            :return: Custom longitude from settings.
            """
            return self.get_proto().use_longitude

  `def get_use_sd_card_for_data_storage(self) ‑> bool`

    :return: Use SD card set in settings?

    Expand source code

        def get_use_sd_card_for_data_storage(self) -> bool:
            """
            :return: Use SD card set in settings?
            """
            return self.get_proto().use_sd_card_for_data_storage

  `def set_additional_input_sensors(self, additional_input_sensors: ProtoRepeatedMessage) ‑> AppSettings`

    Sets the additional input sensors. :param additional_input_sensors: Payload to set. :return: A modified instance of self.

    Expand source code

        def set_additional_input_sensors(
            self,
            additional_input_sensors: redvox.api1000.common.generic.ProtoRepeatedMessage,
        ) -> "AppSettings":
            """
            Sets the additional input sensors.
            :param additional_input_sensors: Payload to set.
            :return: A modified instance of self.
            """
            common.check_type(
                additional_input_sensors,
                [redvox.api1000.common.generic.ProtoRepeatedMessage],
            )
            self._additional_input_sensors.clear_values()
            self._additional_input_sensors.append_values(
                additional_input_sensors.get_values()
            )
            return self

  `def set_audio_sampling_rate(self, audio_sampling_rate: AudioSamplingRate) ‑> AppSettings`

    Sets the audio sampling rate. :param audio_sampling_rate: Rate to set. :return: A modified instance of self

    Expand source code

        def set_audio_sampling_rate(
            self, audio_sampling_rate: AudioSamplingRate
        ) -> "AppSettings":
            """
            Sets the audio sampling rate.
            :param audio_sampling_rate: Rate to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(
                audio_sampling_rate, [AudioSamplingRate]
            )

            self.get_proto().audio_sampling_rate = redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings.AudioSamplingRate.Value(
                audio_sampling_rate.name
            )
            return self

  `def set_audio_source_tuning(self, audio_source_tuning: AudioSourceTuning) ‑> AppSettings`

    Sets the AudioSourceTuning. :param audio_source_tuning: Tuning to set. :return: A modified instance of self

    Expand source code

        def set_audio_source_tuning(
            self, audio_source_tuning: AudioSourceTuning
        ) -> "AppSettings":
            """
            Sets the AudioSourceTuning.
            :param audio_source_tuning: Tuning to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(
                audio_source_tuning, [AudioSourceTuning]
            )

            self.get_proto().audio_source_tuning = redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings.AudioSourceTuning.Value(
                audio_source_tuning.name
            )
            return self

  `def set_auth_server_url(self, auth_server_url: str) ‑> AppSettings`

    Set custom auth server url in settings. :param auth_server_url: Url to set :return: A modified instance of self

    Expand source code

        def set_auth_server_url(self, auth_server_url: str) -> "AppSettings":
            """
            Set custom auth server url in settings.
            :param auth_server_url: Url to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(auth_server_url, [str])
            self.get_proto().auth_server_url = auth_server_url
            return self

  `def set_auto_delete_data_files(self, auto_delete_data_files: bool) ‑> AppSettings`

    Set auto delete data files in settings. :param auto_delete_data_files: Setting to set. :return: A modified instance of self

    Expand source code

        def set_auto_delete_data_files(self, auto_delete_data_files: bool) -> "AppSettings":
            """
            Set auto delete data files in settings.
            :param auto_delete_data_files: Setting to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(auto_delete_data_files, [bool])
            self.get_proto().auto_delete_data_files = auto_delete_data_files
            return self

  `def set_automatically_record(self, automatically_record: bool) ‑> AppSettings`

    Sets automatically record in the settings. :param automatically_record: Setting to set. :return: A modified instance of self

    Expand source code

        def set_automatically_record(self, automatically_record: bool) -> "AppSettings":
            """
            Sets automatically record in the settings.
            :param automatically_record: Setting to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(automatically_record, [bool])
            self.get_proto().automatically_record = automatically_record
            return self

  `def set_data_server_url(self, data_server_url: str) ‑> AppSettings`

    Sets custom data server url in settings. :param data_server_url: Url to set. :return: A modified instance of self.

    Expand source code

        def set_data_server_url(self, data_server_url: str) -> "AppSettings":
            """
            Sets custom data server url in settings.
            :param data_server_url: Url to set.
            :return: A modified instance of self.
            """
            redvox.api1000.common.typing.check_type(data_server_url, [str])
            self.get_proto().data_server_url = data_server_url
            return self

  `def set_fft_overlap(self, fft_overlap: FftOverlap) ‑> AppSettings`

    Sets the fft overlap in the settings :param fft_overlap: Overlap to set :return: A modified instance of self

    Expand source code

        def set_fft_overlap(self, fft_overlap: FftOverlap) -> "AppSettings":
            """
            Sets the fft overlap in the settings
            :param fft_overlap: Overlap to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(fft_overlap, [FftOverlap])

            self.get_proto().fft_overlap = redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings.FftOverlap.Value(
                fft_overlap.name
            )
            return self

  `def set_launch_at_power_up(self, launch_at_power_up: bool) ‑> AppSettings`

    Sets launch at power up in settings. :param launch_at_power_up: Setting to set :return: A modified instance of self

    Expand source code

        def set_launch_at_power_up(self, launch_at_power_up: bool) -> "AppSettings":
            """
            Sets launch at power up in settings.
            :param launch_at_power_up: Setting to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(launch_at_power_up, [bool])
            self.get_proto().launch_at_power_up = launch_at_power_up
            return self

  `def set_metrics_rate(self, metrics_rate: MetricsRate) ‑> AppSettings`

    Sets the metrics rate. :param metrics_rate: Rate to set. :return: A modified instance of self

    Expand source code

        def set_metrics_rate(self, metrics_rate: MetricsRate) -> "AppSettings":
            """
            Sets the metrics rate.
            :param metrics_rate: Rate to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(metrics_rate, [MetricsRate])

            self.get_proto().metrics_rate = (
                redvox_api_m_pb2.RedvoxPacketM.StationInformation.MetricsRate.Value(
                    metrics_rate.name
                )
            )
            return self

  `def set_provide_backfill(self, provide_backfill: bool) ‑> AppSettings`

    Sets backfill in the settings. :param provide_backfill: Setting to set. :return: A modified instance of self.

    Expand source code

        def set_provide_backfill(self, provide_backfill: bool) -> "AppSettings":
            """
            Sets backfill in the settings.
            :param provide_backfill: Setting to set.
            :return: A modified instance of self.
            """
            redvox.api1000.common.typing.check_type(provide_backfill, [bool])
            self.get_proto().provide_backfill = provide_backfill
            return self

  `def set_publish_data_as_private(self, publish_data_as_private: bool) ‑> AppSettings`

    Sets publish data as private in the settings. :param publish_data_as_private: Setting to set :return: A modified instance of self

    Expand source code

        def set_publish_data_as_private(
            self, publish_data_as_private: bool
        ) -> "AppSettings":
            """
            Sets publish data as private in the settings.
            :param publish_data_as_private: Setting to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(publish_data_as_private, [bool])
            self.get_proto().publish_data_as_private = publish_data_as_private
            return self

  `def set_push_to_server(self, push_to_server: bool) ‑> AppSettings`

    Sets push to server in the settings. :param push_to_server: Setting to set. :return: A modified instance of self

    Expand source code

        def set_push_to_server(self, push_to_server: bool) -> "AppSettings":
            """
            Sets push to server in the settings.
            :param push_to_server: Setting to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(push_to_server, [bool])
            self.get_proto().push_to_server = push_to_server
            return self

  `def set_remove_sensor_dc_offset(self, remove_sensor_dc_offset: bool) ‑> AppSettings`

    Sets remove DC offset in the settings. :param remove_sensor_dc_offset: Setting to set. :return: A modified instance of self

    Expand source code

        def set_remove_sensor_dc_offset(
            self, remove_sensor_dc_offset: bool
        ) -> "AppSettings":
            """
            Sets remove DC offset in the settings.
            :param remove_sensor_dc_offset: Setting to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(remove_sensor_dc_offset, [bool])
            self.get_proto().remove_sensor_dc_offset = remove_sensor_dc_offset
            return self

  `def set_samples_per_window(self, samples_per_window: float) ‑> AppSettings`

    Sets the number of samples per window for storage in the app settings. :param samples_per_window: Samples per window. :return: A modified instance of self.

    Expand source code

        def set_samples_per_window(self, samples_per_window: float) -> "AppSettings":
            """
            Sets the number of samples per window for storage in the app settings.
            :param samples_per_window: Samples per window.
            :return: A modified instance of self.
            """
            redvox.api1000.common.typing.check_type(samples_per_window, [int, float])
            self.get_proto().samples_per_window = samples_per_window
            return self

  `def set_scramble_audio_data(self, scramble_audio_data: bool) ‑> AppSettings`

    Sets scramble audio in the settings. :param scramble_audio_data: Setting to set. :return: A modified instance of self

    Expand source code

        def set_scramble_audio_data(self, scramble_audio_data: bool) -> "AppSettings":
            """
            Sets scramble audio in the settings.
            :param scramble_audio_data: Setting to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(scramble_audio_data, [bool])
            self.get_proto().scramble_audio_data = scramble_audio_data
            return self

  `def set_station_description(self, station_description: str) ‑> AppSettings`

    Sets the station description in the settings. :param station_description: Description to set. :return: A modified instance of self

    Expand source code

        def set_station_description(self, station_description: str) -> "AppSettings":
            """
            Sets the station description in the settings.
            :param station_description: Description to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(station_description, [str])
            self.get_proto().station_description = station_description
            return self

  `def set_station_id(self, station_id: str) ‑> AppSettings`

    Sets the station id in the settings. :param station_id: Station id to set. :return: A modified instance of self

    Expand source code

        def set_station_id(self, station_id: str) -> "AppSettings":
            """
            Sets the station id in the settings.
            :param station_id: Station id to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(station_id, [str])
            self.get_proto().station_id = station_id
            return self

  `def set_storage_space_allowance(self, storage_space_allowance: float) ‑> AppSettings`

    Set storage space allowance in settings. :param storage_space_allowance: Allowance to set. :return: A modified instance of self

    Expand source code

        def set_storage_space_allowance(
            self, storage_space_allowance: float
        ) -> "AppSettings":
            """
            Set storage space allowance in settings.
            :param storage_space_allowance: Allowance to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(storage_space_allowance, [int, float])

            self.get_proto().storage_space_allowance = storage_space_allowance
            return self

  `def set_time_sync_server_url(self, time_sync_server_url: str) ‑> AppSettings`

    Sets the custom synch url in the settings. :param time_sync_server_url: URL to set. :return: A modified instance of self.

    Expand source code

        def set_time_sync_server_url(self, time_sync_server_url: str) -> "AppSettings":
            """
            Sets the custom synch url in the settings.
            :param time_sync_server_url: URL to set.
            :return: A modified instance of self.
            """
            redvox.api1000.common.typing.check_type(time_sync_server_url, [str])
            self.get_proto().time_sync_server_url = time_sync_server_url
            return self

  `def set_use_altitude(self, use_altitude: float) ‑> AppSettings`

    Set custom altitude in settings. :param use_altitude: Altitude to set. :return: A modified instance of self

    Expand source code

        def set_use_altitude(self, use_altitude: float) -> "AppSettings":
            """
            Set custom altitude in settings.
            :param use_altitude: Altitude to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(use_altitude, [int, float])

            self.get_proto().use_altitude = use_altitude
            return self

  `def set_use_custom_auth_server(self, use_custom_auth_server: bool) ‑> AppSettings`

    Set use custom auth server in settings. :param use_custom_auth_server: Setting to set. :return: Modified instance of self

    Expand source code

        def set_use_custom_auth_server(self, use_custom_auth_server: bool) -> "AppSettings":
            """
            Set use custom auth server in settings.
            :param use_custom_auth_server: Setting to set.
            :return: Modified instance of self
            """
            redvox.api1000.common.typing.check_type(use_custom_auth_server, [bool])
            self.get_proto().use_custom_auth_server = use_custom_auth_server
            return self

  `def set_use_custom_data_server(self, use_custom_data_server: bool) ‑> AppSettings`

    Set use custom data server in settings. :param use_custom_data_server: Setting to set. :return: A modified instance of self.

    Expand source code

        def set_use_custom_data_server(self, use_custom_data_server: bool) -> "AppSettings":
            """
            Set use custom data server in settings.
            :param use_custom_data_server: Setting to set.
            :return: A modified instance of self.
            """
            redvox.api1000.common.typing.check_type(use_custom_data_server, [bool])
            self.get_proto().use_custom_data_server = use_custom_data_server
            return self

  `def set_use_custom_time_sync_server(self, use_custom_time_sync_server: bool) ‑> AppSettings`

    Sets use custom synch server in settings. :param use_custom_time_sync_server: Setting to set. :return: A modified instance of self.

    Expand source code

        def set_use_custom_time_sync_server(
            self, use_custom_time_sync_server: bool
        ) -> "AppSettings":
            """
            Sets use custom synch server in settings.
            :param use_custom_time_sync_server: Setting to set.
            :return: A modified instance of self.
            """
            redvox.api1000.common.typing.check_type(use_custom_time_sync_server, [bool])
            self.get_proto().use_custom_time_sync_server = use_custom_time_sync_server
            return self

  `def set_use_latitude(self, use_latitude: float) ‑> AppSettings`

    Set custom latitude in settings. :param use_latitude: Latitude to set. :return: A modified instance of self.

    Expand source code

        def set_use_latitude(self, use_latitude: float) -> "AppSettings":
            """
            Set custom latitude in settings.
            :param use_latitude: Latitude to set.
            :return: A modified instance of self.
            """
            redvox.api1000.common.typing.check_type(use_latitude, [int, float])

            self.get_proto().use_latitude = use_latitude
            return self

  `def set_use_location_services(self, use_location_services: bool) ‑> AppSettings`

    Sets use location services in settings. :param use_location_services: Setting to set. :return: A modified instance of self

    Expand source code

        def set_use_location_services(self, use_location_services: bool) -> "AppSettings":
            """
            Sets use location services in settings.
            :param use_location_services: Setting to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(use_location_services, [bool])
            self.get_proto().use_location_services = use_location_services
            return self

  `def set_use_longitude(self, use_longitude: float) ‑> AppSettings`

    Sets custom longitude in settings. :param use_longitude: Longitude to set. :return: A modified instance of self

    Expand source code

        def set_use_longitude(self, use_longitude: float) -> "AppSettings":
            """
            Sets custom longitude in settings.
            :param use_longitude: Longitude to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(use_longitude, [int, float])

            self.get_proto().use_longitude = use_longitude
            return self

  `def set_use_sd_card_for_data_storage(self, use_sd_card_for_data_storage: bool) ‑> AppSettings`

    Set use SD card in settings. :param use_sd_card_for_data_storage: Setting to set. :return: A modified instance of self

    Expand source code

        def set_use_sd_card_for_data_storage(
            self, use_sd_card_for_data_storage: bool
        ) -> "AppSettings":
            """
            Set use SD card in settings.
            :param use_sd_card_for_data_storage: Setting to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(use_sd_card_for_data_storage, [bool])
            self.get_proto().use_sd_card_for_data_storage = use_sd_card_for_data_storage
            return self

  ### Inherited members

  - `ProtoBase`:
    - `as_bytes`
    - `as_compressed_bytes`
    - `as_dict`
    - `as_json`
    - `get_metadata`
    - `get_proto`
`class AudioSamplingRate (value, names=None, *, module=None, qualname=None, type=None, start=1)`

  Sampling Rate as provided by the app settings.

  Expand source code

      @wrap_enum(
          redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings.AudioSamplingRate
      )
      class AudioSamplingRate(enum.Enum):
          """
          Sampling Rate as provided by the app settings.
          """

          UNKNOWN_SAMPLING_RATE: int = 0
          HZ_80: int = 1
          HZ_800: int = 2
          HZ_8000: int = 3
          HZ_16000: int = 4
          HZ_48000: int = 5

          @staticmethod
          def from_sampling_rate(sampling_rate: float) -> Optional["AudioSamplingRate"]:
              """
              Convert from a numeric sampling rate into this enum.
              :param sampling_rate: Numeric sampling rate.
              :return: An instance of this enum.
              """
              if sampling_rate == 80.0:
                  return AudioSamplingRate["HZ_80"]
              elif sampling_rate == 800.0:
                  return AudioSamplingRate["HZ_800"]
              elif sampling_rate == 8000.0:
                  return AudioSamplingRate["HZ_8000"]
              elif sampling_rate == 16000.0:
                  return AudioSamplingRate["HZ_16000"]
              elif sampling_rate == 48000.0:
                  return AudioSamplingRate["HZ_48000"]
              else:
                  return AudioSamplingRate["UNKNOWN_SAMPLING_RATE"]

  ### Ancestors

  - enum.Enum

  ### Class variables

  `var HZ_16000 : int`
  `var HZ_48000 : int`
  `var HZ_80 : int`
  `var HZ_800 : int`
  `var HZ_8000 : int`
  `var UNKNOWN_SAMPLING_RATE : int`
  `var from_proto`

    Sampling Rate as provided by the app settings.

  ### Static methods

  `def from_sampling_rate(sampling_rate: float) ‑> Optional[AudioSamplingRate]`

    Convert from a numeric sampling rate into this enum. :param sampling_rate: Numeric sampling rate. :return: An instance of this enum.

    Expand source code

        @staticmethod
        def from_sampling_rate(sampling_rate: float) -> Optional["AudioSamplingRate"]:
            """
            Convert from a numeric sampling rate into this enum.
            :param sampling_rate: Numeric sampling rate.
            :return: An instance of this enum.
            """
            if sampling_rate == 80.0:
                return AudioSamplingRate["HZ_80"]
            elif sampling_rate == 800.0:
                return AudioSamplingRate["HZ_800"]
            elif sampling_rate == 8000.0:
                return AudioSamplingRate["HZ_8000"]
            elif sampling_rate == 16000.0:
                return AudioSamplingRate["HZ_16000"]
            elif sampling_rate == 48000.0:
                return AudioSamplingRate["HZ_48000"]
            else:
                return AudioSamplingRate["UNKNOWN_SAMPLING_RATE"]

  ### Methods

  `def into_proto(self)`
    Expand source code

        setattr(enum, "into_proto", lambda self: proto_type.Value(self.name))

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

  Audio source tuning from app settings

  Expand source code

      @wrap_enum(
          redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings.AudioSourceTuning
      )
      class AudioSourceTuning(enum.Enum):
          """
          Audio source tuning from app settings
          """

          UNKNOWN_TUNING: int = 0
          INFRASOUND_TUNING: int = 1
          LOW_AUDIO_TUNING: int = 2
          AUDIO_TUNING: int = 3

  ### Ancestors

  - enum.Enum

  ### Class variables

  `var AUDIO_TUNING : int`
  `var INFRASOUND_TUNING : int`
  `var LOW_AUDIO_TUNING : int`
  `var UNKNOWN_TUNING : int`
  `var from_proto`

    Audio source tuning from app settings

  ### Methods

  `def into_proto(self)`
    Expand source code

        setattr(enum, "into_proto", lambda self: proto_type.Value(self.name))

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

  Cell service state for station metrics

  Expand source code

      @wrap_enum(
          redvox_api_m_pb2.RedvoxPacketM.StationInformation.StationMetrics.CellServiceState
      )
      class CellServiceState(enum.Enum):
          """
          Cell service state for station metrics
          """

          UNKNOWN: int = 0
          EMERGENCY: int = 1
          NOMINAL: int = 2
          OUT_OF_SERVICE: int = 3
          POWER_OFF: int = 4

  ### Ancestors

  - enum.Enum

  ### Class variables

  `var EMERGENCY : int`
  `var NOMINAL : int`
  `var OUT_OF_SERVICE : int`
  `var POWER_OFF : int`
  `var UNKNOWN : int`
  `var from_proto`

    Cell service state for station metrics

  ### Methods

  `def into_proto(self)`
    Expand source code

        setattr(enum, "into_proto", lambda self: proto_type.Value(self.name))

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

  FFT overlap provided by the app settings

  Expand source code

      @wrap_enum(redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings.FftOverlap)
      class FftOverlap(enum.Enum):
          """
          FFT overlap provided by the app settings
          """

          UNKNOWN: int = 0
          PERCENT_25: int = 1
          PERCENT_50: int = 2
          PERCENT_75: int = 3

  ### Ancestors

  - enum.Enum

  ### Class variables

  `var PERCENT_25 : int`
  `var PERCENT_50 : int`
  `var PERCENT_75 : int`
  `var UNKNOWN : int`
  `var from_proto`

    FFT overlap provided by the app settings

  ### Methods

  `def into_proto(self)`
    Expand source code

        setattr(enum, "into_proto", lambda self: proto_type.Value(self.name))

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

  Input sensors provided to additional input sensors in the app settings.

  Expand source code

      @wrap_enum(redvox_api_m_pb2.RedvoxPacketM.StationInformation.AppSettings.InputSensor)
      class InputSensor(enum.Enum):
          """
          Input sensors provided to additional input sensors in the app settings.
          """

          UNKNOWN_SENSOR: int = 0
          ACCELEROMETER = 1
          ACCELEROMETER_FAST = 2
          AMBIENT_TEMPERATURE = 3
          AUDIO = 4
          COMPRESSED_AUDIO = 5
          GRAVITY = 6
          GYROSCOPE = 7
          GYROSCOPE_FAST = 8
          IMAGE_PER_SECOND = 9
          IMAGE_PER_PACKET = 10
          LIGHT = 11
          LINEAR_ACCELERATION = 12
          LOCATION = 13
          MAGNETOMETER = 14
          MAGNETOMETER_FAST = 15
          ORIENTATION = 16
          PRESSURE = 17
          PROXIMITY = 18
          RELATIVE_HUMIDITY = 19
          ROTATION_VECTOR = 20
          VELOCITY = 21

  ### Ancestors

  - enum.Enum

  ### Class variables

  `var ACCELEROMETER`
  `var ACCELEROMETER_FAST`
  `var AMBIENT_TEMPERATURE`
  `var AUDIO`
  `var COMPRESSED_AUDIO`
  `var GRAVITY`
  `var GYROSCOPE`
  `var GYROSCOPE_FAST`
  `var IMAGE_PER_PACKET`
  `var IMAGE_PER_SECOND`
  `var LIGHT`
  `var LINEAR_ACCELERATION`
  `var LOCATION`
  `var MAGNETOMETER`
  `var MAGNETOMETER_FAST`
  `var ORIENTATION`
  `var PRESSURE`
  `var PROXIMITY`
  `var RELATIVE_HUMIDITY`
  `var ROTATION_VECTOR`
  `var UNKNOWN_SENSOR : int`
  `var VELOCITY`
  `var from_proto`

    Input sensors provided to additional input sensors in the app settings.

  ### Methods

  `def into_proto(self)`
    Expand source code

        setattr(enum, "into_proto", lambda self: proto_type.Value(self.name))

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

  Enumeration for valid metric collection rates

  Expand source code

      @wrap_enum(redvox_api_m_pb2.RedvoxPacketM.StationInformation.StationMetrics.ScreenState)
      class MetricsRate(enum.Enum):
          """
          Enumeration for valid metric collection rates
          """

          UNKNOWN: int = 0
          ONCE_PER_SECOND: int = 1
          ONCE_PER_PACKET: int = 2

  ### Ancestors

  - enum.Enum

  ### Class variables

  `var ONCE_PER_PACKET : int`
  `var ONCE_PER_SECOND : int`
  `var UNKNOWN : int`
  `var from_proto`

    Enumeration for valid metric collection rates

  ### Methods

  `def into_proto(self)`
    Expand source code

        setattr(enum, "into_proto", lambda self: proto_type.Value(self.name))

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

  Network type for station metrics

  Expand source code

      @wrap_enum(redvox_api_m_pb2.RedvoxPacketM.StationInformation.StationMetrics.NetworkType)
      class NetworkType(enum.Enum):
          """
          Network type for station metrics
          """

          UNKNOWN_NETWORK: int = 0
          NO_NETWORK: int = 1
          WIFI: int = 2
          CELLULAR: int = 3
          WIRED: int = 4

  ### Ancestors

  - enum.Enum

  ### Class variables

  `var CELLULAR : int`
  `var NO_NETWORK : int`
  `var UNKNOWN_NETWORK : int`
  `var WIFI : int`
  `var WIRED : int`
  `var from_proto`

    Network type for station metrics

  ### Methods

  `def into_proto(self)`
    Expand source code

        setattr(enum, "into_proto", lambda self: proto_type.Value(self.name))

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

  Type-safe OS enumeration for station info

  Expand source code

      @wrap_enum(redvox_api_m_pb2.RedvoxPacketM.StationInformation.OsType)
      class OsType(enum.Enum):
          """
          Type-safe OS enumeration for station info
          """

          UNKNOWN_OS: int = 0
          ANDROID: int = 1
          IOS: int = 2
          OSX: int = 3
          LINUX: int = 4
          WINDOWS: int = 5

  ### Ancestors

  - enum.Enum

  ### Class variables

  `var ANDROID : int`
  `var IOS : int`
  `var LINUX : int`
  `var OSX : int`
  `var UNKNOWN_OS : int`
  `var WINDOWS : int`
  `var from_proto`

    Type-safe OS enumeration for station info

  ### Methods

  `def into_proto(self)`
    Expand source code

        setattr(enum, "into_proto", lambda self: proto_type.Value(self.name))

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

  Power state for station metrics

  Expand source code

      @wrap_enum(redvox_api_m_pb2.RedvoxPacketM.StationInformation.StationMetrics.PowerState)
      class PowerState(enum.Enum):
          """
          Power state for station metrics
          """

          UNKNOWN_POWER_STATE: int = 0
          UNPLUGGED: int = 1
          CHARGING: int = 2
          CHARGED: int = 3

  ### Ancestors

  - enum.Enum

  ### Class variables

  `var CHARGED : int`
  `var CHARGING : int`
  `var UNKNOWN_POWER_STATE : int`
  `var UNPLUGGED : int`
  `var from_proto`

    Power state for station metrics

  ### Methods

  `def into_proto(self)`
    Expand source code

        setattr(enum, "into_proto", lambda self: proto_type.Value(self.name))

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

  Enumeration of possible screen states.

  Expand source code

      @wrap_enum(redvox_api_m_pb2.RedvoxPacketM.StationInformation.StationMetrics.ScreenState)
      class ScreenState(enum.Enum):
          """
          Enumeration of possible screen states.
          """

          UNKNOWN_SCREEN_STATE: int = 0
          ON: int = 1
          OFF: int = 2
          HEADLESS: int = 3

  ### Ancestors

  - enum.Enum

  ### Class variables

  `var HEADLESS : int`
  `var OFF : int`
  `var ON : int`
  `var UNKNOWN_SCREEN_STATE : int`
  `var from_proto`

    Enumeration of possible screen states.

  ### Methods

  `def into_proto(self)`
    Expand source code

        setattr(enum, "into_proto", lambda self: proto_type.Value(self.name))

`class ServiceUrls (service_urls_proto: src.redvox_api_m.redvox_api_m_pb2.ServiceUrls)`

  A collection of URLs utilized while collecting, authenticating, and transmitting the data.

  Expand source code

      class ServiceUrls(
          redvox.api1000.common.generic.ProtoBase[
              redvox_api_m_pb2.RedvoxPacketM.StationInformation.ServiceUrls
          ]
      ):
          """
          A collection of URLs utilized while collecting, authenticating, and transmitting the data.
          """

          def __init__(
              self,
              service_urls_proto: redvox_api_m_pb2.RedvoxPacketM.StationInformation.ServiceUrls,
          ):
              super().__init__(service_urls_proto)

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

          def get_auth_server(self) -> str:
              """
              :return: The authentication server URL.
              """
              return self.get_proto().auth_server

          def set_auth_server(self, _auth_server: str) -> "ServiceUrls":
              """
              Sets the authentication server url
              :param _auth_server: Url to set
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(_auth_server, [str])
              self.get_proto().auth_server = _auth_server
              return self

          def get_synch_server(self) -> str:
              """
              :return: The time synchronization URL.
              """
              return self.get_proto().synch_server

          def set_synch_server(self, _synch_server: str) -> "ServiceUrls":
              """
              Sets the time synchronization URL.
              :param _synch_server: URL to set.
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(_synch_server, [str])
              self.get_proto().synch_server = _synch_server
              return self

          def get_acquisition_server(self) -> str:
              """
              :return: The data acquisition server URL
              """
              return self.get_proto().acquisition_server

          def set_acquisition_server(self, _acquisition_server: str) -> "ServiceUrls":
              """
              Sets the data acquisition server URL
              :param _acquisition_server: URL to set
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(_acquisition_server, [str])
              self.get_proto().acquisition_server = _acquisition_server
              return self

  ### Ancestors

  - ProtoBase
  - typing.Generic

  ### Static methods

  `def new() ‑> ServiceUrls`

    :return: A new, empty ServiceUrls instance

    Expand source code

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

  ### Methods

  `def get_acquisition_server(self) ‑> str`

    :return: The data acquisition server URL

    Expand source code

        def get_acquisition_server(self) -> str:
            """
            :return: The data acquisition server URL
            """
            return self.get_proto().acquisition_server

  `def get_auth_server(self) ‑> str`

    :return: The authentication server URL.

    Expand source code

        def get_auth_server(self) -> str:
            """
            :return: The authentication server URL.
            """
            return self.get_proto().auth_server

  `def get_synch_server(self) ‑> str`

    :return: The time synchronization URL.

    Expand source code

        def get_synch_server(self) -> str:
            """
            :return: The time synchronization URL.
            """
            return self.get_proto().synch_server

  `def set_acquisition_server(self, _acquisition_server: str) ‑> ServiceUrls`

    Sets the data acquisition server URL :param _acquisition_server: URL to set :return: A modified instance of self

    Expand source code

        def set_acquisition_server(self, _acquisition_server: str) -> "ServiceUrls":
            """
            Sets the data acquisition server URL
            :param _acquisition_server: URL to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(_acquisition_server, [str])
            self.get_proto().acquisition_server = _acquisition_server
            return self

  `def set_auth_server(self, _auth_server: str) ‑> ServiceUrls`

    Sets the authentication server url :param _auth_server: Url to set :return: A modified instance of self

    Expand source code

        def set_auth_server(self, _auth_server: str) -> "ServiceUrls":
            """
            Sets the authentication server url
            :param _auth_server: Url to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(_auth_server, [str])
            self.get_proto().auth_server = _auth_server
            return self

  `def set_synch_server(self, _synch_server: str) ‑> ServiceUrls`

    Sets the time synchronization URL. :param _synch_server: URL to set. :return: A modified instance of self

    Expand source code

        def set_synch_server(self, _synch_server: str) -> "ServiceUrls":
            """
            Sets the time synchronization URL.
            :param _synch_server: URL to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(_synch_server, [str])
            self.get_proto().synch_server = _synch_server
            return self

  ### Inherited members

  - `ProtoBase`:
    - `as_bytes`
    - `as_compressed_bytes`
    - `as_dict`
    - `as_json`
    - `get_metadata`
    - `get_proto`
`class StationInformation (station_information_proto: src.redvox_api_m.redvox_api_m_pb2.StationInformation)`

  A collection of station related metadata, settings, and metrics.

  Expand source code

      class StationInformation(
          redvox.api1000.common.generic.ProtoBase[
              redvox_api_m_pb2.RedvoxPacketM.StationInformation
          ]
      ):
          """
          A collection of station related metadata, settings, and metrics.
          """

          def __init__(
              self,
              station_information_proto: redvox_api_m_pb2.RedvoxPacketM.StationInformation,
          ):
              super().__init__(station_information_proto)
              self._app_settings: AppSettings = AppSettings(
                  station_information_proto.app_settings
              )
              self._station_metrics: StationMetrics = StationMetrics(
                  station_information_proto.station_metrics
              )
              self._service_urls: ServiceUrls = ServiceUrls(
                  station_information_proto.service_urls
              )

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

          def get_id(self) -> str:
              """
              :return: The station id
              """
              return self.get_proto().id

          def set_id(self, _id: str) -> "StationInformation":
              """
              Sets the station id
              :param _id: Id to set
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(_id, [str])
              self.get_proto().id = _id
              return self

          def get_uuid(self) -> str:
              """
              :return: The station UUID
              """
              return self.get_proto().uuid

          def set_uuid(self, uuid: str) -> "StationInformation":
              """
              Sets the station uuid.
              :param uuid: uuid to set
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(uuid, [str])
              self.get_proto().uuid = uuid
              return self

          def get_description(self) -> str:
              """
              :return: The station's description.
              """
              return self.get_proto().description

          def set_description(self, description: str) -> "StationInformation":
              """
              Sets the station's description
              :param description: Description of the station
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(description, [str])
              self.get_proto().description = description
              return self

          def get_auth_id(self) -> str:
              """
              :return: The station's authentication id
              """
              return self.get_proto().auth_id

          def set_auth_id(self, auth_id: str) -> "StationInformation":
              """
              Sets the station's authentication id
              :param auth_id: Authentication id to set
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(auth_id, [str])
              self.get_proto().auth_id = auth_id
              return self

          def get_make(self) -> str:
              """
              :return: The station's make
              """
              return self.get_proto().make

          def set_make(self, make: str) -> "StationInformation":
              """
              Sets the station's make
              :param make: Make to set
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(make, [str])
              self.get_proto().make = make
              return self

          def get_model(self) -> str:
              """
              :return: The station's model
              """
              return self.get_proto().model

          def set_model(self, model: str) -> "StationInformation":
              """
              Sets the station's model
              :param model: Model to set
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(model, [str])
              self.get_proto().model = model
              return self

          def get_os(self) -> OsType:
              """
              :return: The station's OS
              """
              return OsType(self.get_proto().os)

          # pylint: disable=C0103
          def set_os(self, os: OsType) -> "StationInformation":
              """
              Sets the station's OS
              :param os: OS to set
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(os, [OsType])
              self.get_proto().os = (
                  redvox_api_m_pb2.RedvoxPacketM.StationInformation.OsType.Value(os.name)
              )
              return self

          def get_os_version(self) -> str:
              """
              :return: The station's OS version
              """
              return self.get_proto().os_version

          def set_os_version(self, os_version: str) -> "StationInformation":
              """
              Sets the station's OS version
              :param os_version: OS version to set
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(os_version, [str])
              self.get_proto().os_version = os_version
              return self

          def get_app_version(self) -> str:
              """
              :return: The station's app version
              """
              return self.get_proto().app_version

          def set_app_version(self, app_version: str) -> "StationInformation":
              """
              Sets the station's app version.
              :param app_version: App version to set.
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(app_version, [str])
              self.get_proto().app_version = app_version
              return self

          def get_is_private(self) -> bool:
              """
              :return: If this station was recording privately.
              """
              return self.get_proto().is_private

          def set_is_private(self, is_private: bool) -> "StationInformation":
              """
              Sets if this station is recording privately.
              :param is_private: True if private, False otherwise
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(is_private, [bool])
              self.get_proto().is_private = is_private
              return self

          def get_app_settings(self) -> AppSettings:
              """
              :return: This station's copy of its settings
              """
              return self._app_settings

          def set_app_settings(self, app_settings: AppSettings) -> "StationInformation":
              """
              Sets the AppSettings.
              :param app_settings: AppSettings to set.
              :return: A modified instance of self.
              """
              common.check_type(app_settings, [AppSettings])
              self.get_proto().app_settings.CopyFrom(app_settings.get_proto())
              self._app_settings = AppSettings(self.get_proto().app_settings)
              return self

          def get_station_metrics(self) -> StationMetrics:
              """
              :return: Metrics associated with this station.
              """
              return self._station_metrics

          def set_station_metrics(
              self, station_metrics: StationMetrics
          ) -> "StationInformation":
              """
              Sets the StationMetrics.
              :param station_metrics: StationMetrics to set.
              :return: A modified instance of self.
              """
              common.check_type(station_metrics, [StationMetrics])
              self.get_proto().station_metrics.CopyFrom(station_metrics.get_proto())
              self._station_metrics = StationMetrics(self.get_proto().station_metrics)
              return self

          def get_service_urls(self) -> ServiceUrls:
              """
              :return: URLs used to service this station.
              """
              return self._service_urls

          def set_service_urls(self, service_urls: ServiceUrls) -> "StationInformation":
              """
              Sets the service urls.
              :param service_urls: ServiceUrls to set.
              :return: A modified instance of self.
              """
              common.check_type(service_urls, [ServiceUrls])
              self.get_proto().service_urls.CopyFrom(service_urls.get_proto())
              self._service_urls = ServiceUrls(self.get_proto().service_urls)
              return self

  ### Ancestors

  - ProtoBase
  - typing.Generic

  ### Static methods

  `def new() ‑> StationInformation`

    :return: A new, empty StationInformation instance

    Expand source code

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

  ### Methods

  `def get_app_settings(self) ‑> AppSettings`

    :return: This station's copy of its settings

    Expand source code

        def get_app_settings(self) -> AppSettings:
            """
            :return: This station's copy of its settings
            """
            return self._app_settings

  `def get_app_version(self) ‑> str`

    :return: The station's app version

    Expand source code

        def get_app_version(self) -> str:
            """
            :return: The station's app version
            """
            return self.get_proto().app_version

  `def get_auth_id(self) ‑> str`

    :return: The station's authentication id

    Expand source code

        def get_auth_id(self) -> str:
            """
            :return: The station's authentication id
            """
            return self.get_proto().auth_id

  `def get_description(self) ‑> str`

    :return: The station's description.

    Expand source code

        def get_description(self) -> str:
            """
            :return: The station's description.
            """
            return self.get_proto().description

  `def get_id(self) ‑> str`

    :return: The station id

    Expand source code

        def get_id(self) -> str:
            """
            :return: The station id
            """
            return self.get_proto().id

  `def get_is_private(self) ‑> bool`

    :return: If this station was recording privately.

    Expand source code

        def get_is_private(self) -> bool:
            """
            :return: If this station was recording privately.
            """
            return self.get_proto().is_private

  `def get_make(self) ‑> str`

    :return: The station's make

    Expand source code

        def get_make(self) -> str:
            """
            :return: The station's make
            """
            return self.get_proto().make

  `def get_model(self) ‑> str`

    :return: The station's model

    Expand source code

        def get_model(self) -> str:
            """
            :return: The station's model
            """
            return self.get_proto().model

  `def get_os(self) ‑> OsType`

    :return: The station's OS

    Expand source code

        def get_os(self) -> OsType:
            """
            :return: The station's OS
            """
            return OsType(self.get_proto().os)

  `def get_os_version(self) ‑> str`

    :return: The station's OS version

    Expand source code

        def get_os_version(self) -> str:
            """
            :return: The station's OS version
            """
            return self.get_proto().os_version

  `def get_service_urls(self) ‑> ServiceUrls`

    :return: URLs used to service this station.

    Expand source code

        def get_service_urls(self) -> ServiceUrls:
            """
            :return: URLs used to service this station.
            """
            return self._service_urls

  `def get_station_metrics(self) ‑> StationMetrics`

    :return: Metrics associated with this station.

    Expand source code

        def get_station_metrics(self) -> StationMetrics:
            """
            :return: Metrics associated with this station.
            """
            return self._station_metrics

  `def get_uuid(self) ‑> str`

    :return: The station UUID

    Expand source code

        def get_uuid(self) -> str:
            """
            :return: The station UUID
            """
            return self.get_proto().uuid

  `def set_app_settings(self, app_settings: AppSettings) ‑> StationInformation`

    Sets the AppSettings. :param app_settings: AppSettings to set. :return: A modified instance of self.

    Expand source code

        def set_app_settings(self, app_settings: AppSettings) -> "StationInformation":
            """
            Sets the AppSettings.
            :param app_settings: AppSettings to set.
            :return: A modified instance of self.
            """
            common.check_type(app_settings, [AppSettings])
            self.get_proto().app_settings.CopyFrom(app_settings.get_proto())
            self._app_settings = AppSettings(self.get_proto().app_settings)
            return self

  `def set_app_version(self, app_version: str) ‑> StationInformation`

    Sets the station's app version. :param app_version: App version to set. :return: A modified instance of self

    Expand source code

        def set_app_version(self, app_version: str) -> "StationInformation":
            """
            Sets the station's app version.
            :param app_version: App version to set.
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(app_version, [str])
            self.get_proto().app_version = app_version
            return self

  `def set_auth_id(self, auth_id: str) ‑> StationInformation`

    Sets the station's authentication id :param auth_id: Authentication id to set :return: A modified instance of self

    Expand source code

        def set_auth_id(self, auth_id: str) -> "StationInformation":
            """
            Sets the station's authentication id
            :param auth_id: Authentication id to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(auth_id, [str])
            self.get_proto().auth_id = auth_id
            return self

  `def set_description(self, description: str) ‑> StationInformation`

    Sets the station's description :param description: Description of the station :return: A modified instance of self

    Expand source code

        def set_description(self, description: str) -> "StationInformation":
            """
            Sets the station's description
            :param description: Description of the station
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(description, [str])
            self.get_proto().description = description
            return self

  `def set_id(self, _id: str) ‑> StationInformation`

    Sets the station id :param _id: Id to set :return: A modified instance of self

    Expand source code

        def set_id(self, _id: str) -> "StationInformation":
            """
            Sets the station id
            :param _id: Id to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(_id, [str])
            self.get_proto().id = _id
            return self

  `def set_is_private(self, is_private: bool) ‑> StationInformation`

    Sets if this station is recording privately. :param is_private: True if private, False otherwise :return: A modified instance of self

    Expand source code

        def set_is_private(self, is_private: bool) -> "StationInformation":
            """
            Sets if this station is recording privately.
            :param is_private: True if private, False otherwise
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(is_private, [bool])
            self.get_proto().is_private = is_private
            return self

  `def set_make(self, make: str) ‑> StationInformation`

    Sets the station's make :param make: Make to set :return: A modified instance of self

    Expand source code

        def set_make(self, make: str) -> "StationInformation":
            """
            Sets the station's make
            :param make: Make to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(make, [str])
            self.get_proto().make = make
            return self

  `def set_model(self, model: str) ‑> StationInformation`

    Sets the station's model :param model: Model to set :return: A modified instance of self

    Expand source code

        def set_model(self, model: str) -> "StationInformation":
            """
            Sets the station's model
            :param model: Model to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(model, [str])
            self.get_proto().model = model
            return self

  `def set_os(self, os: OsType) ‑> StationInformation`

    Sets the station's OS :param os: OS to set :return: A modified instance of self

    Expand source code

        def set_os(self, os: OsType) -> "StationInformation":
            """
            Sets the station's OS
            :param os: OS to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(os, [OsType])
            self.get_proto().os = (
                redvox_api_m_pb2.RedvoxPacketM.StationInformation.OsType.Value(os.name)
            )
            return self

  `def set_os_version(self, os_version: str) ‑> StationInformation`

    Sets the station's OS version :param os_version: OS version to set :return: A modified instance of self

    Expand source code

        def set_os_version(self, os_version: str) -> "StationInformation":
            """
            Sets the station's OS version
            :param os_version: OS version to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(os_version, [str])
            self.get_proto().os_version = os_version
            return self

  `def set_service_urls(self, service_urls: ServiceUrls) ‑> StationInformation`

    Sets the service urls. :param service_urls: ServiceUrls to set. :return: A modified instance of self.

    Expand source code

        def set_service_urls(self, service_urls: ServiceUrls) -> "StationInformation":
            """
            Sets the service urls.
            :param service_urls: ServiceUrls to set.
            :return: A modified instance of self.
            """
            common.check_type(service_urls, [ServiceUrls])
            self.get_proto().service_urls.CopyFrom(service_urls.get_proto())
            self._service_urls = ServiceUrls(self.get_proto().service_urls)
            return self

  `def set_station_metrics(self, station_metrics: StationMetrics) ‑> StationInformation`

    Sets the StationMetrics. :param station_metrics: StationMetrics to set. :return: A modified instance of self.

    Expand source code

        def set_station_metrics(
            self, station_metrics: StationMetrics
        ) -> "StationInformation":
            """
            Sets the StationMetrics.
            :param station_metrics: StationMetrics to set.
            :return: A modified instance of self.
            """
            common.check_type(station_metrics, [StationMetrics])
            self.get_proto().station_metrics.CopyFrom(station_metrics.get_proto())
            self._station_metrics = StationMetrics(self.get_proto().station_metrics)
            return self

  `def set_uuid(self, uuid: str) ‑> StationInformation`

    Sets the station uuid. :param uuid: uuid to set :return: A modified instance of self

    Expand source code

        def set_uuid(self, uuid: str) -> "StationInformation":
            """
            Sets the station uuid.
            :param uuid: uuid to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(uuid, [str])
            self.get_proto().uuid = uuid
            return self

  ### Inherited members

  - `ProtoBase`:
    - `as_bytes`
    - `as_compressed_bytes`
    - `as_dict`
    - `as_json`
    - `get_metadata`
    - `get_proto`
`class StationMetrics (station_metrics_proto: src.redvox_api_m.redvox_api_m_pb2.StationMetrics)`

  A collection of timestamps metrics relating to station state.

  Expand source code

      class StationMetrics(
          redvox.api1000.common.generic.ProtoBase[
              redvox_api_m_pb2.RedvoxPacketM.StationInformation.StationMetrics
          ]
      ):
          """
          A collection of timestamps metrics relating to station state.
          """

          # noinspection Mypy
          def __init__(
              self,
              station_metrics_proto: redvox_api_m_pb2.RedvoxPacketM.StationInformation.StationMetrics,
          ):
              super().__init__(station_metrics_proto)
              self._timestamps = common.TimingPayload(
                  station_metrics_proto.timestamps
              ).set_default_unit()
              # pylint: disable=E1101
              self._network_type: redvox.api1000.common.generic.ProtoRepeatedMessage = (
                  redvox.api1000.common.generic.ProtoRepeatedMessage(
                      station_metrics_proto,
                      station_metrics_proto.network_type,
                      _NETWORK_TYPE_FIELD_NAME,
                      NetworkType.from_proto,
                      NetworkType.into_proto,
                  )
              )
              # pylint: disable=E1101
              self._cell_service_state: redvox.api1000.common.generic.ProtoRepeatedMessage = (
                  redvox.api1000.common.generic.ProtoRepeatedMessage(
                      station_metrics_proto,
                      station_metrics_proto.cell_service_state,
                      _CELL_SERVICE_STATE_FIELD_NAME,
                      CellServiceState.from_proto,
                      CellServiceState.into_proto,
                  )
              )
              # noinspection PyTypeChecker
              self._network_strength: common.SamplePayload = common.SamplePayload(
                  station_metrics_proto.network_strength
              ).set_unit(common.Unit.DECIBEL)
              # noinspection PyTypeChecker
              self._temperature: common.SamplePayload = common.SamplePayload(
                  station_metrics_proto.temperature
              ).set_unit(common.Unit.DEGREES_CELSIUS)
              # noinspection PyTypeChecker
              self._battery: common.SamplePayload = common.SamplePayload(
                  station_metrics_proto.battery
              ).set_unit(common.Unit.PERCENTAGE)
              # noinspection PyTypeChecker
              self._battery_current: common.SamplePayload = common.SamplePayload(
                  station_metrics_proto.battery_current
              ).set_unit(common.Unit.MICROAMPERES)
              # noinspection PyTypeChecker
              self._available_ram: common.SamplePayload = common.SamplePayload(
                  station_metrics_proto.available_ram
              ).set_unit(common.Unit.BYTE)
              # noinspection PyTypeChecker
              self._available_disk: common.SamplePayload = common.SamplePayload(
                  station_metrics_proto.available_disk
              ).set_unit(common.Unit.BYTE)
              # noinspection PyTypeChecker
              self._cpu_utilization: common.SamplePayload = common.SamplePayload(
                  station_metrics_proto.cpu_utilization
              ).set_unit(common.Unit.PERCENTAGE)
              # pylint: disable=E1101
              self._power_state: redvox.api1000.common.generic.ProtoRepeatedMessage = (
                  redvox.api1000.common.generic.ProtoRepeatedMessage(
                      station_metrics_proto,
                      station_metrics_proto.power_state,
                      _POWER_STATE_FIELD_NAME,
                      PowerState.from_proto,
                      PowerState.into_proto,
                  )
              )
              # pylint: disable=E1101
              self._wifi_wake_loc: redvox.api1000.common.generic.ProtoRepeatedMessage = (
                  redvox.api1000.common.generic.ProtoRepeatedMessage(
                      station_metrics_proto,
                      station_metrics_proto.wifi_wake_lock,
                      _WIFI_WAKE_LOCK_FIELD_NAME,
                      WifiWakeLock.from_proto,
                      WifiWakeLock.into_proto,
                  )
              )
              # pylint: disable=E1101
              self._screen_state: redvox.api1000.common.generic.ProtoRepeatedMessage = (
                  redvox.api1000.common.generic.ProtoRepeatedMessage(
                      station_metrics_proto,
                      station_metrics_proto.screen_state,
                      _SCREEN_STATE_FIELD_NAME,
                      ScreenState.from_proto,
                      ScreenState.into_proto,
                  )
              )
              # noinspection PyTypeChecker
              self._screen_brightness: common.SamplePayload = common.SamplePayload(
                  station_metrics_proto.screen_brightness
              ).set_unit(common.Unit.PERCENTAGE)

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

          def get_timestamps(self) -> common.TimingPayload:
              """
              :return: Timestamps associated with each metric.
              """
              return self._timestamps

          def set_timestamps(self, timestamps: common.TimingPayload) -> "StationMetrics":
              """
              Sets the timing payload.
              :param timestamps: Payload to set.
              :return: A modified instance of self.
              """
              common.check_type(timestamps, [common.TimingPayload])
              self.get_proto().timestamps.CopyFrom(timestamps.get_proto())
              self._timestamps = common.TimingPayload(self.get_proto().timestamps)
              return self

          def get_network_type(self) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
              """
              :return: A payload of network types.
              """
              return self._network_type

          def set_network_type(
              self, network_type: redvox.api1000.common.generic.ProtoRepeatedMessage
          ) -> "StationMetrics":
              """
              Sets the network type payload.
              :param network_type: The payload to set.
              :return: A modified instance of self.
              """
              common.check_type(
                  network_type, [redvox.api1000.common.generic.ProtoRepeatedMessage]
              )
              self._network_type.clear_values()
              self._network_type.append_values(network_type.get_values())
              return self

          def get_cell_service_state(
              self,
          ) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
              """
              :return: A payload of cell service state
              """
              return self._cell_service_state

          def set_cell_service_state(
              self, cell_service_state: redvox.api1000.common.generic.ProtoRepeatedMessage
          ) -> "StationMetrics":
              """
              Sets the cell service state payload.
              :param cell_service_state: The payload to set.
              :return: A modified instance of self.
              """
              common.check_type(
                  cell_service_state, [redvox.api1000.common.generic.ProtoRepeatedMessage]
              )
              self._cell_service_state.clear_values()
              self._cell_service_state.append_values(cell_service_state.get_values())
              return self

          def get_network_strength(self) -> common.SamplePayload:
              """
              :return: A payload of network strengths
              """
              return self._network_strength

          def set_network_strength(
              self, network_strength: common.SamplePayload
          ) -> "StationMetrics":
              """
              Sets the network strength payload.
              :param network_strength: The payload to set.
              :return: A modified instance of self.
              """
              common.check_type(network_strength, [common.SamplePayload])
              # noinspection Mypy
              self.get_proto().network_strength.CopyFrom(network_strength.get_proto())
              self._network_strength = common.SamplePayload(self.get_proto().network_strength)
              return self

          def get_temperature(self) -> common.SamplePayload:
              """
              :return: A payload of temperatures
              """
              return self._temperature

          def set_temperature(self, temperature: common.SamplePayload) -> "StationMetrics":
              """
              Sets the temperature payload.
              :param temperature: The payload to set.
              :return: A modified instance of self.
              """
              common.check_type(temperature, [common.SamplePayload])
              # noinspection Mypy
              self.get_proto().temperature.CopyFrom(temperature.get_proto())
              self._temperature = common.SamplePayload(self.get_proto().temperature)
              return self

          def get_battery(self) -> common.SamplePayload:
              """
              :return: A payload of battery remaining
              """
              return self._battery

          def set_battery(self, battery: common.SamplePayload) -> "StationMetrics":
              """
              Sets the battery payload.
              :param battery: Payload to set.
              :return: A modified instance of self.
              """
              common.check_type(battery, [common.SamplePayload])
              # noinspection Mypy
              self.get_proto().battery.CopyFrom(battery.get_proto())
              self._battery = common.SamplePayload(self.get_proto().battery)
              return self

          def get_battery_current(self) -> common.SamplePayload:
              """
              :return: A payload of battery current
              """
              return self._battery_current

          def set_battery_current(
              self, battery_current: common.SamplePayload
          ) -> "StationMetrics":
              """
              Sets the battery current payload.
              :param battery_current: Payload to set.
              :return: A modified instance of self.
              """
              common.check_type(battery_current, [common.SamplePayload])
              # noinspection Mypy
              self.get_proto().battery_current.CopyFrom(battery_current.get_proto())
              self._battery_current = common.SamplePayload(self.get_proto().battery_current)
              return self

          def get_available_ram(self) -> common.SamplePayload:
              """
              :return: A payload of available RAM
              """
              return self._available_ram

          def set_available_ram(
              self, available_ram: common.SamplePayload
          ) -> "StationMetrics":
              """
              Sets the available ram payload.
              :param available_ram: Payload to set.
              :return: A modified instance of self.
              """
              common.check_type(available_ram, [common.SamplePayload])
              # noinspection Mypy
              self.get_proto().available_ram.CopyFrom(available_ram.get_proto())
              self._available_ram = common.SamplePayload(self.get_proto().available_ram)
              return self

          def get_available_disk(self) -> common.SamplePayload:
              """
              :return: A payload of available disk
              """
              return self._available_disk

          def set_available_disk(
              self, available_disk: common.SamplePayload
          ) -> "StationMetrics":
              """
              Sets the available disk payload.
              :param available_disk: Payload to set.
              :return: A modified instance of self.
              """
              common.check_type(available_disk, [common.SamplePayload])
              # noinspection Mypy
              self.get_proto().available_disk.CopyFrom(available_disk.get_proto())
              self._available_disk = common.SamplePayload(self.get_proto().available_disk)
              return self

          def get_cpu_utilization(self) -> common.SamplePayload:
              """
              :return: A payload CPU utilization
              """
              return self._cpu_utilization

          def set_cpu_utilization(
              self, cpu_utilization: common.SamplePayload
          ) -> "StationMetrics":
              """
              Sets the CPU utilization payload.
              :param cpu_utilization: The payload to set.
              :return: A modified instance of self.
              """
              common.check_type(cpu_utilization, [common.SamplePayload])
              # noinspection Mypy
              self.get_proto().cpu_utilization.CopyFrom(cpu_utilization.get_proto())
              self._cpu_utilization = common.SamplePayload(self.get_proto().cpu_utilization)
              return self

          def get_power_state(self) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
              """
              :return: A payload of power states
              """
              return self._power_state

          def set_power_state(
              self, power_state: redvox.api1000.common.generic.ProtoRepeatedMessage
          ) -> "StationMetrics":
              """
              Sets the power state payload.
              :param power_state: Payload to set.
              :return: A modified instance of self.
              """
              common.check_type(
                  power_state, [redvox.api1000.common.generic.ProtoRepeatedMessage]
              )
              self._power_state.clear_values()
              self._power_state.append_values(power_state.get_values())
              return self

          def get_wifi_wake_loc(self) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
              """
              :return: A payload of Wifi wake lock states
              """
              return self._wifi_wake_loc

          def set_wifi_wake_loc(
              self, wifi_wake_loc: redvox.api1000.common.generic.ProtoRepeatedMessage
          ) -> "StationMetrics":
              """
              Sets the wifi wake lock payload.
              :param wifi_wake_loc: The wifi wake lock payload to set.
              :return: A modified instance of self.
              """
              common.check_type(
                  wifi_wake_loc, [redvox.api1000.common.generic.ProtoRepeatedMessage]
              )
              self._wifi_wake_loc.clear_values()
              self._wifi_wake_loc.append_values(wifi_wake_loc.get_values())
              return self

          def get_screen_state(self) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
              """
              :return: A payload of screen states
              """
              return self._screen_state

          def set_screen_state(
              self, screen_state: redvox.api1000.common.generic.ProtoRepeatedMessage
          ) -> "StationMetrics":
              """
              Sets the screen state payload.
              :param screen_state: ScreenState repeated message to set.
              :return: A modified instance of self.
              """
              common.check_type(
                  screen_state, [redvox.api1000.common.generic.ProtoRepeatedMessage]
              )
              self._screen_state.clear_values()
              self._screen_state.append_values(screen_state.get_values())
              return self

          def get_screen_brightness(self) -> common.SamplePayload:
              """
              :return: A payload of the screens brightness.
              """
              return self._screen_brightness

          def set_screen_brightness(
              self, screen_brightness: common.SamplePayload
          ) -> "StationMetrics":
              """
              Sets the screen brightness payload.
              :param screen_brightness: A SamplePayload containing screen brightness.
              :return: A modified instance of self.
              """
              common.check_type(screen_brightness, [common.SamplePayload])
              # noinspection Mypy
              self.get_proto().screen_brightness.CopyFrom(screen_brightness.get_proto())
              self._screen_brightness = common.SamplePayload(
                  self.get_proto().screen_brightness
              )
              return self

  ### Ancestors

  - ProtoBase
  - typing.Generic

  ### Static methods

  `def new() ‑> StationMetrics`

    :return: A new, empty StationMetrics instance

    Expand source code

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

  ### Methods

  `def get_available_disk(self) ‑> SamplePayload`

    :return: A payload of available disk

    Expand source code

        def get_available_disk(self) -> common.SamplePayload:
            """
            :return: A payload of available disk
            """
            return self._available_disk

  `def get_available_ram(self) ‑> SamplePayload`

    :return: A payload of available RAM

    Expand source code

        def get_available_ram(self) -> common.SamplePayload:
            """
            :return: A payload of available RAM
            """
            return self._available_ram

  `def get_battery(self) ‑> SamplePayload`

    :return: A payload of battery remaining

    Expand source code

        def get_battery(self) -> common.SamplePayload:
            """
            :return: A payload of battery remaining
            """
            return self._battery

  `def get_battery_current(self) ‑> SamplePayload`

    :return: A payload of battery current

    Expand source code

        def get_battery_current(self) -> common.SamplePayload:
            """
            :return: A payload of battery current
            """
            return self._battery_current

  `def get_cell_service_state(self) ‑> ProtoRepeatedMessage`

    :return: A payload of cell service state

    Expand source code

        def get_cell_service_state(
            self,
        ) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
            """
            :return: A payload of cell service state
            """
            return self._cell_service_state

  `def get_cpu_utilization(self) ‑> SamplePayload`

    :return: A payload CPU utilization

    Expand source code

        def get_cpu_utilization(self) -> common.SamplePayload:
            """
            :return: A payload CPU utilization
            """
            return self._cpu_utilization

  `def get_network_strength(self) ‑> SamplePayload`

    :return: A payload of network strengths

    Expand source code

        def get_network_strength(self) -> common.SamplePayload:
            """
            :return: A payload of network strengths
            """
            return self._network_strength

  `def get_network_type(self) ‑> ProtoRepeatedMessage`

    :return: A payload of network types.

    Expand source code

        def get_network_type(self) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
            """
            :return: A payload of network types.
            """
            return self._network_type

  `def get_power_state(self) ‑> ProtoRepeatedMessage`

    :return: A payload of power states

    Expand source code

        def get_power_state(self) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
            """
            :return: A payload of power states
            """
            return self._power_state

  `def get_screen_brightness(self) ‑> SamplePayload`

    :return: A payload of the screens brightness.

    Expand source code

        def get_screen_brightness(self) -> common.SamplePayload:
            """
            :return: A payload of the screens brightness.
            """
            return self._screen_brightness

  `def get_screen_state(self) ‑> ProtoRepeatedMessage`

    :return: A payload of screen states

    Expand source code

        def get_screen_state(self) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
            """
            :return: A payload of screen states
            """
            return self._screen_state

  `def get_temperature(self) ‑> SamplePayload`

    :return: A payload of temperatures

    Expand source code

        def get_temperature(self) -> common.SamplePayload:
            """
            :return: A payload of temperatures
            """
            return self._temperature

  `def get_timestamps(self) ‑> TimingPayload`

    :return: Timestamps associated with each metric.

    Expand source code

        def get_timestamps(self) -> common.TimingPayload:
            """
            :return: Timestamps associated with each metric.
            """
            return self._timestamps

  `def get_wifi_wake_loc(self) ‑> ProtoRepeatedMessage`

    :return: A payload of Wifi wake lock states

    Expand source code

        def get_wifi_wake_loc(self) -> redvox.api1000.common.generic.ProtoRepeatedMessage:
            """
            :return: A payload of Wifi wake lock states
            """
            return self._wifi_wake_loc

  `def set_available_disk(self, available_disk: SamplePayload) ‑> StationMetrics`

    Sets the available disk payload. :param available_disk: Payload to set. :return: A modified instance of self.

    Expand source code

        def set_available_disk(
            self, available_disk: common.SamplePayload
        ) -> "StationMetrics":
            """
            Sets the available disk payload.
            :param available_disk: Payload to set.
            :return: A modified instance of self.
            """
            common.check_type(available_disk, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().available_disk.CopyFrom(available_disk.get_proto())
            self._available_disk = common.SamplePayload(self.get_proto().available_disk)
            return self

  `def set_available_ram(self, available_ram: SamplePayload) ‑> StationMetrics`

    Sets the available ram payload. :param available_ram: Payload to set. :return: A modified instance of self.

    Expand source code

        def set_available_ram(
            self, available_ram: common.SamplePayload
        ) -> "StationMetrics":
            """
            Sets the available ram payload.
            :param available_ram: Payload to set.
            :return: A modified instance of self.
            """
            common.check_type(available_ram, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().available_ram.CopyFrom(available_ram.get_proto())
            self._available_ram = common.SamplePayload(self.get_proto().available_ram)
            return self

  `def set_battery(self, battery: SamplePayload) ‑> StationMetrics`

    Sets the battery payload. :param battery: Payload to set. :return: A modified instance of self.

    Expand source code

        def set_battery(self, battery: common.SamplePayload) -> "StationMetrics":
            """
            Sets the battery payload.
            :param battery: Payload to set.
            :return: A modified instance of self.
            """
            common.check_type(battery, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().battery.CopyFrom(battery.get_proto())
            self._battery = common.SamplePayload(self.get_proto().battery)
            return self

  `def set_battery_current(self, battery_current: SamplePayload) ‑> StationMetrics`

    Sets the battery current payload. :param battery_current: Payload to set. :return: A modified instance of self.

    Expand source code

        def set_battery_current(
            self, battery_current: common.SamplePayload
        ) -> "StationMetrics":
            """
            Sets the battery current payload.
            :param battery_current: Payload to set.
            :return: A modified instance of self.
            """
            common.check_type(battery_current, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().battery_current.CopyFrom(battery_current.get_proto())
            self._battery_current = common.SamplePayload(self.get_proto().battery_current)
            return self

  `def set_cell_service_state(self, cell_service_state: ProtoRepeatedMessage) ‑> StationMetrics`

    Sets the cell service state payload. :param cell_service_state: The payload to set. :return: A modified instance of self.

    Expand source code

        def set_cell_service_state(
            self, cell_service_state: redvox.api1000.common.generic.ProtoRepeatedMessage
        ) -> "StationMetrics":
            """
            Sets the cell service state payload.
            :param cell_service_state: The payload to set.
            :return: A modified instance of self.
            """
            common.check_type(
                cell_service_state, [redvox.api1000.common.generic.ProtoRepeatedMessage]
            )
            self._cell_service_state.clear_values()
            self._cell_service_state.append_values(cell_service_state.get_values())
            return self

  `def set_cpu_utilization(self, cpu_utilization: SamplePayload) ‑> StationMetrics`

    Sets the CPU utilization payload. :param cpu_utilization: The payload to set. :return: A modified instance of self.

    Expand source code

        def set_cpu_utilization(
            self, cpu_utilization: common.SamplePayload
        ) -> "StationMetrics":
            """
            Sets the CPU utilization payload.
            :param cpu_utilization: The payload to set.
            :return: A modified instance of self.
            """
            common.check_type(cpu_utilization, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().cpu_utilization.CopyFrom(cpu_utilization.get_proto())
            self._cpu_utilization = common.SamplePayload(self.get_proto().cpu_utilization)
            return self

  `def set_network_strength(self, network_strength: SamplePayload) ‑> StationMetrics`

    Sets the network strength payload. :param network_strength: The payload to set. :return: A modified instance of self.

    Expand source code

        def set_network_strength(
            self, network_strength: common.SamplePayload
        ) -> "StationMetrics":
            """
            Sets the network strength payload.
            :param network_strength: The payload to set.
            :return: A modified instance of self.
            """
            common.check_type(network_strength, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().network_strength.CopyFrom(network_strength.get_proto())
            self._network_strength = common.SamplePayload(self.get_proto().network_strength)
            return self

  `def set_network_type(self, network_type: ProtoRepeatedMessage) ‑> StationMetrics`

    Sets the network type payload. :param network_type: The payload to set. :return: A modified instance of self.

    Expand source code

        def set_network_type(
            self, network_type: redvox.api1000.common.generic.ProtoRepeatedMessage
        ) -> "StationMetrics":
            """
            Sets the network type payload.
            :param network_type: The payload to set.
            :return: A modified instance of self.
            """
            common.check_type(
                network_type, [redvox.api1000.common.generic.ProtoRepeatedMessage]
            )
            self._network_type.clear_values()
            self._network_type.append_values(network_type.get_values())
            return self

  `def set_power_state(self, power_state: ProtoRepeatedMessage) ‑> StationMetrics`

    Sets the power state payload. :param power_state: Payload to set. :return: A modified instance of self.

    Expand source code

        def set_power_state(
            self, power_state: redvox.api1000.common.generic.ProtoRepeatedMessage
        ) -> "StationMetrics":
            """
            Sets the power state payload.
            :param power_state: Payload to set.
            :return: A modified instance of self.
            """
            common.check_type(
                power_state, [redvox.api1000.common.generic.ProtoRepeatedMessage]
            )
            self._power_state.clear_values()
            self._power_state.append_values(power_state.get_values())
            return self

  `def set_screen_brightness(self, screen_brightness: SamplePayload) ‑> StationMetrics`

    Sets the screen brightness payload. :param screen_brightness: A SamplePayload containing screen brightness. :return: A modified instance of self.

    Expand source code

        def set_screen_brightness(
            self, screen_brightness: common.SamplePayload
        ) -> "StationMetrics":
            """
            Sets the screen brightness payload.
            :param screen_brightness: A SamplePayload containing screen brightness.
            :return: A modified instance of self.
            """
            common.check_type(screen_brightness, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().screen_brightness.CopyFrom(screen_brightness.get_proto())
            self._screen_brightness = common.SamplePayload(
                self.get_proto().screen_brightness
            )
            return self

  `def set_screen_state(self, screen_state: ProtoRepeatedMessage) ‑> StationMetrics`

    Sets the screen state payload. :param screen_state: ScreenState repeated message to set. :return: A modified instance of self.

    Expand source code

        def set_screen_state(
            self, screen_state: redvox.api1000.common.generic.ProtoRepeatedMessage
        ) -> "StationMetrics":
            """
            Sets the screen state payload.
            :param screen_state: ScreenState repeated message to set.
            :return: A modified instance of self.
            """
            common.check_type(
                screen_state, [redvox.api1000.common.generic.ProtoRepeatedMessage]
            )
            self._screen_state.clear_values()
            self._screen_state.append_values(screen_state.get_values())
            return self

  `def set_temperature(self, temperature: SamplePayload) ‑> StationMetrics`

    Sets the temperature payload. :param temperature: The payload to set. :return: A modified instance of self.

    Expand source code

        def set_temperature(self, temperature: common.SamplePayload) -> "StationMetrics":
            """
            Sets the temperature payload.
            :param temperature: The payload to set.
            :return: A modified instance of self.
            """
            common.check_type(temperature, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().temperature.CopyFrom(temperature.get_proto())
            self._temperature = common.SamplePayload(self.get_proto().temperature)
            return self

  `def set_timestamps(self, timestamps: TimingPayload) ‑> StationMetrics`

    Sets the timing payload. :param timestamps: Payload to set. :return: A modified instance of self.

    Expand source code

        def set_timestamps(self, timestamps: common.TimingPayload) -> "StationMetrics":
            """
            Sets the timing payload.
            :param timestamps: Payload to set.
            :return: A modified instance of self.
            """
            common.check_type(timestamps, [common.TimingPayload])
            self.get_proto().timestamps.CopyFrom(timestamps.get_proto())
            self._timestamps = common.TimingPayload(self.get_proto().timestamps)
            return self

  `def set_wifi_wake_loc(self, wifi_wake_loc: ProtoRepeatedMessage) ‑> StationMetrics`

    Sets the wifi wake lock payload. :param wifi_wake_loc: The wifi wake lock payload to set. :return: A modified instance of self.

    Expand source code

        def set_wifi_wake_loc(
            self, wifi_wake_loc: redvox.api1000.common.generic.ProtoRepeatedMessage
        ) -> "StationMetrics":
            """
            Sets the wifi wake lock payload.
            :param wifi_wake_loc: The wifi wake lock payload to set.
            :return: A modified instance of self.
            """
            common.check_type(
                wifi_wake_loc, [redvox.api1000.common.generic.ProtoRepeatedMessage]
            )
            self._wifi_wake_loc.clear_values()
            self._wifi_wake_loc.append_values(wifi_wake_loc.get_values())
            return self

  ### Inherited members

  - `ProtoBase`:
    - `as_bytes`
    - `as_compressed_bytes`
    - `as_dict`
    - `as_json`
    - `get_metadata`
    - `get_proto`
`class WifiWakeLock (value, names=None, *, module=None, qualname=None, type=None, start=1)`

  WiFi wake lock states for station metrics

  Expand source code

      @wrap_enum(
          redvox_api_m_pb2.RedvoxPacketM.StationInformation.StationMetrics.WifiWakeLock
      )
      class WifiWakeLock(enum.Enum):
          """
          WiFi wake lock states for station metrics
          """

          NONE: int = 0
          HIGH_PERF: int = 1
          LOW_LATENCY: int = 2
          OTHER: int = 3

  ### Ancestors

  - enum.Enum

  ### Class variables

  `var HIGH_PERF : int`
  `var LOW_LATENCY : int`
  `var NONE : int`
  `var OTHER : int`
  `var from_proto`

    WiFi wake lock states for station metrics

  ### Methods

  `def into_proto(self)`
    Expand source code

        setattr(enum, "into_proto", lambda self: proto_type.Value(self.name))