diff --git a/src/auracast/auracast_config.py b/src/auracast/auracast_config.py index d751ebe..ca73302 100644 --- a/src/auracast/auracast_config.py +++ b/src/auracast/auracast_config.py @@ -7,24 +7,19 @@ class AuracastQoSConfig(BaseModel): number_of_retransmissions: int max_transport_latency_ms: int -class AuracastQosHigh(AuracastQoSConfig): +class AuracastQosDefault(AuracastQoSConfig): iso_int_multiple_10ms: int = 1 number_of_retransmissions:int = 4 #4 max_transport_latency_ms:int = 43 #varies from the default value in bumble (was 65) -class AuracastQosMid(AuracastQoSConfig): - iso_int_multiple_10ms: int = 2 - number_of_retransmissions:int = 3 - max_transport_latency_ms:int = 65 - -class AuracastQosLow(AuracastQoSConfig): - iso_int_multiple_10ms: int = 3 - number_of_retransmissions:int = 2 #4 - max_transport_latency_ms:int = 65 #varies from the default value in bumble (was 65) +class AuracastQosFast(AuracastQoSConfig): + iso_int_multiple_10ms: int = 1 + number_of_retransmissions:int = 2 + max_transport_latency_ms:int = 22 class AuracastGlobalConfig(BaseModel): - qos_config: AuracastQoSConfig = AuracastQosHigh() + qos_config: AuracastQoSConfig = AuracastQosDefault() debug: bool = False device_name: str = 'Auracaster' transport: str = '' diff --git a/src/auracast/multicast.py b/src/auracast/multicast.py index 1fff98f..7a88ae4 100644 --- a/src/auracast/multicast.py +++ b/src/auracast/multicast.py @@ -346,6 +346,32 @@ async def init_broadcast( ) ) bigs[f'big{i}']['broadcast_audio_announcement'] = bap.BroadcastAudioAnnouncement(conf.id) + + # Build advertising data types list + advertising_data_types = [ + (core.AdvertisingData.BROADCAST_NAME, conf.name.encode()), + ] + + # [PBP] Add Public Broadcast Profile Service Data (UUID 0x1856) + # Required for PTS Qualification (PBP/PBS/STR) + # Dynamically calculate PBP features based on stream configuration + pbp_features = 0x00 + + # Bit 0: Encryption (set if broadcast_code is configured) + if conf.code is not None: + pbp_features |= 0x01 + + # Bit 1 vs Bit 2: Quality based on sample rate + if global_config.auracast_sampling_rate_hz in [16000, 24000]: + pbp_features |= 0x02 # Standard Quality + elif global_config.auracast_sampling_rate_hz == 48000: + pbp_features |= 0x04 # High Quality + + pbp_service_data = struct.pack('