| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- # -*- 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
|