# -*- coding: utf-8 -*- """ Satellite-bezogene Netzwerk-Befehle. """ from dataclasses import dataclass, field from trixy_core.network.cmd.base import CommandMessage @dataclass class SatelliteConnect(CommandMessage): """ Verbindungsanfrage eines Satellites. Wird vom Satellite zum Server gesendet, um eine Verbindung aufzubauen. """ mac_address: str = "" room: str = "" alias: str = "" ip_address: str = "" version: str = "" hostname: str = "" os_name: str = "" os_version: str = "" @dataclass class SatelliteDisconnect(CommandMessage): """ Trennungsbenachrichtigung. Wird gesendet, wenn ein Satellite die Verbindung trennen möchte. """ mac_address: str = "" reason: str = "" @dataclass class SatelliteAccepted(CommandMessage): """ Verbindungsbestätigung vom Server. Wird zum Satellite gesendet, wenn die Verbindung akzeptiert wurde. Enthält auch die Audio-Konfiguration für TTS-Wiedergabe. """ satellite_id: str = "" session_key: bytes = field(default=b"", repr=False) audio_input_port: int = 0 audio_output_port: int = 0 music_port: int = 0 # TTS-Audio-Format (vom Server mitgeteilt) tts_sample_rate: int = 22050 tts_channels: int = 1 tts_sample_width: int = 2 # 16-bit # Musik-Audio-Format music_sample_rate: int = 44100 music_channels: int = 2 music_sample_width: int = 2 # 16-bit @dataclass class SatelliteDenied(CommandMessage): """ Verbindungsablehnung vom Server. Wird gesendet, wenn die Verbindung abgelehnt wurde. """ reason: str = "" retry_allowed: bool = True retry_after_seconds: int = 60 @dataclass class AudioConfigUpdate(CommandMessage): """ Audio-Konfigurationsänderung vom Server. Wird gesendet, wenn sich das TTS-Plugin ändert und der Client seine Audio-Ausgabe anpassen muss. """ # TTS-Audio-Format tts_sample_rate: int = 22050 tts_channels: int = 1 tts_sample_width: int = 2 # 16-bit # Musik-Audio-Format (optional, falls auch geändert) music_sample_rate: int = 0 # 0 = nicht ändern music_channels: int = 0 music_sample_width: int = 0 @dataclass class TTSStop(CommandMessage): """ Signalisiert das Ende eines TTS-Streams. Wird vom Server gesendet, wenn alle TTS-Daten übertragen wurden. Der Client soll die restlichen Daten im Buffer abspielen (finish). """ pass @dataclass class StreamStop(CommandMessage): """ Signalisiert das Ende eines Audio-Streams. Wird vom Server gesendet, um einen Stream zu beenden. """ stream_type: str = "all" # "tts", "music", oder "all" immediate: bool = False # True = sofort stoppen, False = Buffer abspielen