Interruptor de audio
A medida que los usuarios utilizan cada vez más varios dispositivos de fuente de audio para realizar sus tareas diarias, aumenta la demanda de una solución más simple para administrar el uso de auriculares en todos los dispositivos. El cambio de audio realiza la transición de las conexiones de auriculares entre dispositivos sin problemas según la actividad del usuario (p.ej., iniciar una película) y los eventos prioritarios (p.ej., una llamada entrante).
Principios de UX
- El cambio de conexión debe ser rápido y basarse en la acción del usuario.
- El cambio de conexión debe ser transparente para los usuarios, lo que les permite controlarlo o revertirlo si no es deseable.
- El cambio debe respetar la privacidad del usuario.
Funciones
Buscador de interruptor de audio: El buscador es un dispositivo de fuente de audio (por ejemplo, un teléfono o una tablet) que busca auriculares cercanos para conectarse cuando corresponda.
Proveedor de interruptor de audio: Por lo general, el proveedor es un auricular que anuncia su presencia y estado de conexión para que los buscadores tomen decisiones de cambio.
Descripción general de los requisitos
Para lograr el cambio inteligente, los proveedores deben cumplir con los siguientes requisitos:
Nombre | Descripción | Requisitos | ¿Es obligatorio? |
---|---|---|---|
Análisis de páginas | Para aceptar una nueva solicitud de conexión de otro buscador cuando ya existe una conexión. Para proveedores de un solo punto:
|
Para mejorar el rendimiento, se requiere el modo de análisis de páginas de baja latencia (el intervalo de análisis no debe ser superior a 640 ms). Para lograr un equilibrio entre la duración de batería y el rendimiento de cambio, el proveedor puede tener un modo de análisis de páginas predeterminado para la mayoría de los casos (modo de bajo consumo, el intervalo de análisis no debe ser superior a 1280 ms). Sin embargo, el modo de baja latencia se debe usar en las siguientes situaciones:
|
Obligatorio |
Historial de conexiones | Para volver a la conexión anterior y reanudar la reproducción, si corresponde. El cambio se activará mediante comunicaciones a través de las APIs de Message Stream. El evento de pausa del audio se debe incluir en el registro para reanudar la reproducción, si corresponde. |
Mantén el historial de conexión y, luego, implementa las APIs de Message Stream. | Obligatorio |
Estado de conexión | Para que los buscadores realicen el juicio de cambio de conexión.El estado de la conexión incluye lo siguiente:
|
Se incluye el estado de conexión en el anuncio BLE y el flujo de mensajes. | Obligatorio |
Cambio en las capacidades del entorno de ejecución | Para habilitar el interruptor de audio, se debe actualizar el firmware en el proveedor, por lo que las funciones deben sincronizarse entre el buscador y el proveedor durante el tiempo de ejecución. | Implementa las APIs de Message Stream para acceder a las funciones del entorno de ejecución. | Obligatorio |
Reglas de conmutación configurables | Permite que Seeker configure la prioridad entre la transmisión de audio activa existente y las solicitudes de transmisión de audio nuevas a través de la configuración de preferencias del usuario. Por ejemplo, el buscador de interruptores de audio puede proporcionar parámetros de configuración de la IU para permitir que los usuarios habiliten o inhabiliten el cambio automático entre la transmisión de contenido multimedia y las llamadas. El buscador de interruptores de audio establecerá y obtendrá la regla de cambio a través del flujo de mensajes. |
Solo para proveedores multipunto. Implementa las APIs de Message Stream para que se puedan configurar las reglas de cambio entre dispositivos conectados. |
Opcional |
Cambio de dispositivo activo | Permite que el buscador de interruptores de audio simule el cambio de audio entre dispositivos conectados. En el lado del buscador de interruptores de audio, puede haber una IU para que los usuarios cambien fácilmente entre dispositivos conectados. |
Solo para proveedores multipunto. Implementa las APIs de flujo de mensajes para que el buscador de interruptores de audio determine la fuente de audio activa entre los dispositivos conectados. |
Obligatorio |
Notificación de cambio multipunto | Permite que el buscador de interruptores de audio muestre la notificación de cambio. | Solo para proveedores multipunto. Implementa las APIs de Message Stream para notificar a los buscadores de interruptores de audio conectados cuando se realice un cambio multipunto. |
Obligatorio |
Carga útil publicitaria
El proveedor debe incluir su estado de conexión actual en el anuncio, que se basa en los datos de la cuenta de Fast Pair que se describen en Publicidad: Cuando no se puede detectar.
Ten en cuenta que la versión de la tabla 4.2 es 0x1.
Campo de estado de la conexión
Octeto | Tipo de datos | Descripción | Valor | ¿Es obligatorio? |
---|---|---|---|---|
0 | uint8 |
Longitud y tipo de campo 0bLLLLTTTT
|
0bLLLL0101
|
Obligatorio |
1 | uint8 |
Estado de la conexión 0bHAFRSSSS
|
0bHAFRSSSS
|
Obligatorio |
2 | uint8 |
Datos personalizados Actualmente, solo contiene el tipo de contenido que se usa para describir el uso de la transmisión de audio actual. El solicitante se la enviará al proveedor. |
El valor se envía del buscador de la transmisión activa actual al proveedor a través de la transmisión de mensajes. 0 si la transmisión activa actual no es de Seeker. | Obligatorio |
3: var | Mapa de bits de dispositivos conectados Es un mapa de bits para mostrar qué dispositivos están conectados actualmente al proveedor. Todos los dispositivos vinculados se organizan en orden, un bit para cada dispositivo vinculado. La duración dependerá de la cantidad de dispositivos vinculados del proveedor. |
El bit asignado se establece en 1 si el dispositivo está conectado actualmente al proveedor; de lo contrario, se establece en 0. Consulta Mapa de bits de dispositivos conectados para obtener más información. |
Opcional |
Tabla 4.1: Datos sin procesar del campo de estado de la conexión
Marcas de conexión
0bH = detección en la cabeza
- 1, en la cabeza ahora
- 0, de lo contrario, no está en la cabeza o no hay un sensor de OHD
0bA = Disponibilidad de conexión
- 1, hay una conexión disponible
- 0, de lo contrario
0bF = modo sin distracciones
- 1.Ahora, en el modo enfocado, no se permite el cambio de conexión para el uso de contenido multimedia, es decir, no se puede cambiar de A2DP a A2DP.
- 0, de lo contrario
0bR = Se volvió a conectar automáticamente
- 1, si el proveedor vuelve a conectar automáticamente la conexión actual, lo que significa que los usuarios no la conectaron (para varios puntos, si una de las conexiones existentes se vuelve a conectar automáticamente, se debe establecer en 1)
- 0, de lo contrario
Estado de conexión
- 0x0: Sin conexión
- 0x1: paginación
- 0x2: Conectado, pero no se transfieren datos
- 0x3: Transferencia de datos que no son de audio (solo cuando se puede cambiar, de lo contrario, usa 0xF)
- 0x4: Transmisión de A2DP, no se aplica AVRCP
- 0x5: Transmisión de A2DP y reproducción de AVRCP
- 0x6: Transmisión de HFP (llamada telefónica o por VoIP), incluidos los tonos de llamada en banda y fuera de banda
- 0x7: Audio LE: Transmisión de contenido multimedia sin control
- 0x8: Audio LE: Transmisión de contenido multimedia con control
- 0x9: Audio LE: Transmisión de llamadas
- 0xA: Audio LE: transmisión
- 0xF: Inhabilita el interruptor de conexión temporalmente (p. ej., actualización de firmware).
Tipo de contexto de audio LE y estado de conexión
Se recomienda que el proveedor de audio LE controle todos los tipos de contexto especificados en Números asignados 6.12.3 (a menos que el proveedor no admita explícitamente un tipo de contexto determinado) y asigne el tipo de contexto al estado de conexión como se indica a continuación.
- Conversacional: 0x9
- Medios: 0x8
- Juego: 0x7
- Instructivo: 0x7
- Asistentes de voz: 0x9
- En vivo: 0x9
- Efectos de sonido: 0x2
- Notificaciones: 0x2
- Tono: 0x9
- Alertas: 0x7
- Alarma de emergencia: 0x9
En el caso del tipo de contexto de audio LE mixto, como la reproducción de contenido multimedia durante la llamada, el proveedor debe usar el estado de conexión con la prioridad más alta, es decir, 0x9 (llamada) para la situación anterior en lugar de 0x8 (contenido multimedia).
Mapa de bits del dispositivo conectado
Para evitar el cambio de conexión no deseado, es posible que el buscador deba saber a qué dispositivos está conectado el auricular. Por ejemplo, cuando los auriculares están conectados al teléfono, el usuario no quiere que el cambio de conexión lo interrumpa cuando uno de los miembros de la familia inicia YouTube en la tablet.
Ten en cuenta que este mapa de bits es anónimo, por lo que el buscador no puede saber qué otros dispositivos están vinculados con el proveedor. Por ejemplo, toma 5 dispositivos vinculados:
- 0: Laptop (0bx0000000)
- 1: phoneA (0b0x000000)
- 2: phoneB (0b00x00000)
- 3: Tablet (0b000x0000)
- 4: TV (0b0000x000)
Si los dispositivos conectados actuales son una laptop y una tablet, el valor del mapa de bits será 0b10010000. Se acepta el cambio de orden si es inevitable, por ejemplo, cuando los usuarios restablecen la configuración de fábrica de los auriculares o cuando el recuento de dispositivos vinculados alcanza el límite superior.
Anuncio resoluble aleatorio
Para evitar el seguimiento y respetar la privacidad del usuario, el proveedor debe rotar y encriptar el campo por la clave de la cuenta con AES-CTR:
encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)
en el que
La clave se deriva de la clave de la cuenta en uso, que se define en la siguiente sección.
La clave la genera la función HKDF, IETF RFC 5869, con la función hash SHA-256.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
El proveedor debe usar la clave de cuenta original aquí, es decir, el primer byte de la clave es 0x04, que no se incluye en el patrón de uso.
El IV (vector inicial) es la sal de 2 bytes de los datos de la clave de la cuenta con relleno cero, es decir, IV es concat(sal, CEROS de 14 bytes).
Los datos sin procesar del estado de la conexión se definen en la tabla 4.1. Si cambia el estado de la conexión, se deben volver a generar la sal y la RPA en el mismo período publicitario.
Esto hace que el campo de estado de conexión encriptada rote al mismo tiempo que los datos de la clave de la cuenta.
El anuncio BLE tendrá la siguiente estructura:
Octeto | Tipo de datos | Descripción | Valor | ¿Es obligatorio? |
---|---|---|---|---|
0 | uint8 |
Versión y marcas | 0x10 | Obligatorio |
1: t | Datos de la clave de la cuenta | varía | Obligatorio | |
t+1 - s | Datos de la batería | varía | Opcional | |
s+1 - var | Datos aleatorios que se pueden resolver | varía | Obligatorio si la lista de claves de la cuenta no está vacía, de lo contrario, se excluye. |
Tabla 4.2: Anuncio BLE con datos aleatorios que se pueden resolver
Los datos aleatorios que se pueden resolver contienen lo siguiente:
Octeto | Tipo de datos | Descripción | Valor | ¿Es obligatorio? |
---|---|---|---|---|
0 | uint8 |
Longitud y tipo de campo 0bLLLLTTTT
|
0bLLLL0110
|
Obligatorio |
1: var | Datos encriptados | varía | Obligatorio |
Tabla 4.2.1: Datos aleatorios que se pueden resolver
Por ejemplo, si los datos aleatorios que se pueden resolver contienen un campo de estado de conexión encriptado, el resultado desencriptado será el campo de estado de conexión.
Para evitar manipulaciones, los datos de clave de la cuenta anteriores deben modificarse ligeramente cuando se incluyen los datos resoluble aleatorios en el anuncio. Por lo general, cuando se compila el filtro de claves de cuenta, se produce un valor V combinando el filtro de claves de cuenta con una sal. En cambio, cuando también se anuncian datos resolvibles aleatorios, el valor V debe construirse de la siguiente manera:
V = concat(account_key, salt, random_resolvable_data)
Si se anuncian datos de batería y datos aleatorios que se pueden resolver, V debe compilarse de la siguiente manera:
V = concat(account_key, salt, battery_data, random_resolvable_data)
En Usar clave de cuenta
El cambio de conexión se basa en la cuenta, por lo que el proveedor debe incluir la información de la cuenta de la conexión actual en el anuncio BLE. Si el dispositivo conectado actual es un buscador de interruptores de audio, el proveedor debería poder obtener la clave de la cuenta asociada a este buscador y usarla para encriptar el campo de estado de la conexión. Si la fuente de audio conectada no es un buscador de interruptores de audio, el proveedor debe usar la clave de cuenta que se usó más recientemente.
Antes de calcular el filtro de claves de cuenta, el proveedor debe modificar el primer byte de las claves de cuenta para incluir uno de los siguientes patrones de uso:
- 0b00000100
Esta clave de cuenta no está en uso.
Esta es la predeterminada (consulta Clave de la cuenta). - 0b00000101
Esta clave de cuenta es la que se usó más recientemente.
Esta clave de cuenta encripta el campo de estado de la conexión. No hay información de la clave de la cuenta del estado de conexión actual, lo que podría significar que no hay dispositivos conectados o que el dispositivo conectado no es un buscador de interruptores de audio. - 0b00000110
Esta clave de cuenta es la clave de cuenta en uso.
Esta clave de cuenta encripta el campo de estado de la conexión, y el dispositivo conectado actual está asociado con esta clave de cuenta.
Esquema de la carga útil del interruptor de audio
En la siguiente figura, se muestra el esquema de la carga útil del interruptor de audio.

Mensajes
Cuando están conectados, el buscador y el proveedor pueden usar el flujo de mensajes para sincronizar la función de interruptor de audio, activar un interruptor de conexión, establecer y obtener la preferencia de cambio, notificar el estado de la conexión, etcétera. Creamos un grupo de mensajes y códigos de mensajes específicos para el interruptor de audio, como se muestra a continuación.
Nombre del grupo de mensajes | Valor |
---|---|
Cambio de audio | 0x07 |
En las siguientes secciones, se incluyen detalles adicionales para cada código de mensaje.
Nombre del código del mensaje | Valor | Solo multipunto | Remitente | Responder | Encriptar | MAC | Conf. |
---|---|---|---|---|---|---|---|
Obtén la función del interruptor de audio | 0x10 | N | Ambos | Ambos, a través del código 0x11 | N | N | N |
Notifica la capacidad del interruptor de audio | 0x11 | N | Ambos | Ambos | N | S | Sí |
Cómo establecer el estado multipunto | 0x12 | Sí | Buscador | Proveedor | N | S | Sí |
Cómo establecer la preferencia de cambio | 0x20 | Sí | Buscador | Proveedor | N | S | Sí |
Cómo obtener la preferencia de cambio | 0x21 | Sí | Buscador | Proveedor, mediante el código 0x22 | N | N | N |
Preferencias de notificación de cambio | 0x22 | Sí | Proveedor | Buscador | N | N | N |
Cambiar la fuente de audio activa(al dispositivo conectado) | 0x30 | Sí | Buscador | Proveedor | N | S | Sí |
Cómo volver a la pantalla anterior | 0x31 | N | Buscador | Proveedor | N | S | Sí |
Notifica el evento de cambio de varios puntos | 0x32 | Sí | Proveedor | Buscador | N | N | N |
Cómo obtener el estado de la conexión | 0x33 | Sí | Buscador | Proveedor, a través del código 0x34 | N | N | N |
Notifica el estado de la conexión | 0x34 | Sí | Proveedor | Buscador | Sí | N | N |
Notifica que se inició la conexión del interruptor de audio | 0x40 | N | Buscador | Proveedor | N | S | Sí |
Indica la clave de cuenta en uso | 0x41 | N | Buscador | Proveedor | N | S | Sí |
Cómo enviar datos personalizados | 0x42 | N | Buscador | Proveedor | N | S | Sí |
Cómo establecer el objetivo de conexión de descarte | 0x43 | Sí | Buscador | Proveedor | N | S | Sí |
Tabla 4.3: Mensajes de cambio de audio
MAC de los mensajes de cambio de audio
Para proporcionar autenticación de mensajes, todos los mensajes de cambio de audio con datos adicionales que se envían del buscador al proveedor requieren un código de autenticación de mensajes. Cuando se recibe un mensaje con MAC, se debe confirmar para que el buscador sepa si el proveedor reaccionó o no al mensaje.
Si la autenticación del mensaje se realiza correctamente, el proveedor debe enviar el ACK del mensaje:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Declaración | 0xFF |
1 | uint8 | Conf. | 0x01 |
2 - 3 | uint16 | Longitud de los datos adicionales | varía |
4 | uint8 | Cambio de audio | 0x07 |
5 | uint8 | Código de mensaje de cambio de audio | varía |
6 - s | Datos adicionales | varía |
Si falla, el proveedor enviará el NAK para el mensaje:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Declaración | 0xFF |
1 | uint8 | NAK | 0x02 |
2 - 3 | uint16 | Longitud de los datos adicionales | 0x0003 |
4 | uint8 | Motivo del error | varía |
5 | uint8 | Cambio de audio | 0x07 |
6 | uint8 | Código de mensaje de cambio de audio | varía |
Ten en cuenta que, si el proveedor es el remitente, no se requiere el MAC.
Cómo obtener la capacidad del cambio de audio
Tanto el proveedor como el buscador de interruptores de audio pueden verificar si el buscador o proveedor de vinculación rápida conectado admite el interruptor de audio con el siguiente mensaje:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Cómo obtener la capacidad del cambio de audio | 0x10 |
2 - 3 | uint16 | Longitud de los datos adicionales | 0 |
Tabla 4.3.1.0: Obtén la función del interruptor de audio
Notificación de la función de cambio de audio
Cuando reciba el código de mensaje get capability of Audio switch, el buscador o proveedor de interruptores de audio responderá con una de las siguientes marcas:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Notificación de la función de cambio de audio | 0x11 |
2 - 3 | uint16 | Longitud de los datos adicionales | 20 si lo envía el solicitante 4 si lo envía el proveedor |
4 - 5 | uint16 | Código de versión del interruptor de audio | Un valor distinto de cero significa que admite el interruptor de audio. El código de la versión actual (con la mejora de seguridad) es 0x0102. 0x0000 o ninguna respuesta en 1 segundo significa que el interruptor de audio no es compatible con este dispositivo. |
6 - 7 | flags | Marcas de capacidad del interruptor de audio del proveedor Si el buscador envía esta información, se deben ignorar estos dos bytes. |
varía Consulta Marcas de capacidades del interruptor de audio. |
8 a 15 | Nonce de mensaje Solo es obligatorio cuando lo envía Seeker |
varía | |
16 a 23 | Código de autenticación de mensajes Solo es obligatorio cuando el solicitante lo envía. |
varía |
Tabla 4.3.1.1: Notifica la capacidad del interruptor de audio
Marcas de capacidades del cambio de audio
Bit 0 (octeto 6, MSB): Estado del interruptor de audio
- 1, si el estado del interruptor de audio está activado
- 0, de lo contrario
Bit 1: configurabilidad multipunto
- 1, si el dispositivo admite la función multipunto y se puede activar o desactivar
- 0, de lo contrario (no es compatible con multipunto o multipunto siempre está activado)
Bit 2: Estado actual multipunto
- 1, si la función multipunto está activada
- 0, de lo contrario
Bit 3: Detección de uso
- 1, si este dispositivo admite la detección de cabeza (incluso si la detección de cabeza está desactivada ahora)
- 0, de lo contrario
Bit 4: Estado actual de la detección de uso
- 1, si la detección de uso está activada
- 0, de lo contrario (no admite la detección en la cabeza o está inhabilitada)
Todos los demás bits están reservados, el valor predeterminado es 0.
Cómo establecer el estado multipunto
En los buscadores de interruptores de audio, es posible que proporcionemos la configuración para que los usuarios activen o desactiven la función multipunto. El buscador establecerá el estado multipunto en el proveedor con el siguiente mensaje:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Cómo establecer el estado multipunto | 0x12 |
2 - 3 | uint16 | Longitud de los datos adicionales | 17 |
4 | uint8 | Estado multipunto | 0: Desactiva la función multipunto. 1: Activa la función multipunto. |
De 5 a 12 | Nonce de mensaje | varía | |
De 13 a 20 | Código de autenticación de mensajes | varía |
Tabla 4.3.1.2: Establece el estado de multipunto
Cómo establecer la preferencia de cambio
Los buscadores de interruptores de audio pueden modificar la preferencia de cambio de multipunto y configurarla en el proveedor con el siguiente mensaje:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Cómo establecer la preferencia de cambio | 0x20 |
2 - 3 | uint16 | Longitud de los datos adicionales | 18 |
4 | flags | Preferencia de cambio | varía Consulta el marcador de preferencia de cambio de multipunto. |
5 | Configuración de cambio avanzada Este byte está reservado, el valor predeterminado es 0. |
varía | |
6 a 13 | Nonce de mensaje | varía | |
Entre 14 y 21 | Código de autenticación de mensajes | varía |
Tabla 4.3.2.0: Establece la preferencia de cambio
Marca de preferencia de cambio multipunto
- Bit 0 (MSB): A2DP vs. A2DP (predeterminado 0)
- Bit 1: HFP o HFP (predeterminado 0)
- Bit 2: A2DP o HFP (predeterminado: 0)
- Bit 3: HFP o A2DP (predeterminado: 1)
- Bits 4 a 7: reservados
- Lo anterior representa "solicitud de perfil nuevo" en comparación con "perfil activo actual".
- 0 para no cambiar
- 1 para cambiar
Cómo obtener la preferencia de cambio
Los buscadores de interruptores de audio pueden consultar la preferencia de cambio de multipunto del proveedor con el siguiente mensaje:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Cómo obtener la configuración de cambio | 0x21 |
2 - 3 | uint16 | Longitud de los datos adicionales | 0 |
Tabla 4.3.2.1: Obtén la preferencia de cambio
Notificar preferencia de cambio
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Notificar preferencia de cambio | 0x22 |
2 - 3 | uint16 | Longitud de los datos adicionales | 2 |
4 | flags | Cómo cambiar las marcas de preferencia | varía Consulta el marcador de preferencia de cambio de multipunto. |
5 | Configuración de cambio avanzada Este byte está reservado, el valor predeterminado debe ser 0. |
varía |
Tabla 4.3.2.2: Notificación de preferencia de cambio
Cambiar la fuente de audio activa (al dispositivo conectado)
Los buscadores de interruptores de audio pueden solicitar al proveedor multipunto que cambie la fuente de audio activa entre los dispositivos conectados con el siguiente mensaje:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Cambiar la fuente de audio activa (al dispositivo conectado) | 0x30 |
2 - 3 | uint16 | Longitud de los datos adicionales | 17 |
4 | flags | Cómo cambiar las marcas de eventos de fuente de audio activa | varía Consulta Cambio del evento de fuente de audio activa. |
De 5 a 12 | Nonce de mensaje | varía | |
De 13 a 20 | Código de autenticación de mensajes | varía |
Tabla 4.3.3.0: Cambia la fuente de audio activa (al dispositivo conectado)
Cambio del evento de fuente de audio activa
- Bit 0 (MSB): 1 cambia a este dispositivo, 0 cambia al segundo dispositivo conectado
- Bit 1: 1 reanuda la reproducción cuando se cambia al dispositivo después del cambio, 0 de lo contrario. Reanudar la reproducción significa que el proveedor envía una notificación de REPRODUCIR al buscador a través del perfil AVRCP. Si el estado anterior (antes de cambiar) no era PLAY, el proveedor debe ignorar esta marca.
- Bit 2: 1 rechaza SCO en el dispositivo conmutado, 0 de lo contrario
- Bit 3: 1 desconecta Bluetooth en el dispositivo de cambio de modo, 0 en caso contrario.
- Bits 4 a 7: reservados
Es posible que los buscadores de interruptores de audio no siempre conozcan su estado correctamente, por lo que es posible que el proveedor reciba un mensaje de "cambiar a este dispositivo" cuando el buscador ya sea el dispositivo activo. En este caso, para mostrar la IU correcta en Seeker, el proveedor puede enviar un NAK con el motivo del error 0x4: Acción redundante del dispositivo.
En el caso de un proveedor de audio LE que tiene más de un miembro del conjunto, el proveedor debe desconectar a todos los miembros del buscador. De lo contrario, la pila de Bluetooth del buscador se volverá a conectar al proveedor.
Volver (al dispositivo desconectado)
Si el cambio de conexión no es deseado, los usuarios pueden revertirlo y, en algunos casos, es conveniente restablecer la conexión de audio para minimizar las interrupciones. El buscador usará el siguiente mensaje para activar el cambio:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Volver (al dispositivo desconectado) | 0x31 |
2 - 3 | uint16 | Longitud de los datos adicionales | 17 |
4 | uint8 | Evento de cambio | varía 0x01: volver a cambiar 0x02: volver a cambiar y reanudar la reproducción |
De 5 a 12 | Nonce de mensaje | varía | |
De 13 a 20 | Código de autenticación de mensajes | varía |
Tabla 4.3.3.1: Cómo volver al dispositivo anterior (desconectado)
En el caso de los proveedores multipunto, para realizar un cambio de conexión, un proveedor puede desconectarse de un dispositivo de fuente de audio y pausar la sesión de audio en la otra fuente de audio. Por ejemplo, supongamos que los auriculares multipunto están conectados a una tableta y a un tercer dispositivo de cambio de audio compatible. El usuario mira un video en la tablet cuando recibe una llamada entrante en el teléfono. El teléfono activará un interruptor de conexión en los auriculares, que debe desconectar el tercer dispositivo para conectarse al teléfono y, al mismo tiempo, pausar la sesión multimedia en la tablet para obtener el tono de llamada del teléfono. Si el usuario rechaza la llamada, es posible que el teléfono le solicite al auricular que "regrese y reanude la reproducción". Cuando se recibe esta solicitud, los auriculares deben volver a conectarse al tercer dispositivo y reanudar la reproducción del video pausado en la tablet.
Notifica el evento de cambio de multipunto
Para que los usuarios sepan que se está produciendo un evento de cambio de interruptor multipunto, el buscador de interruptores de audio puede mostrarles una notificación. El proveedor debe notificar a los buscadores de interruptores de audio conectados sobre el evento de cambio.
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Notificar evento de cambio de varios puntos El proveedor debe enviarlo en cada cambio, incluido el cambio de Audio Switch Seeker a no Audio Switch Seeker, el cambio de no Audio Switch Seeker a Audio Switch Seeker y el cambio de Audio Switch Seeker a Audio Switch Seeker |
0x32 |
2 - 3 | uint16 | Longitud de los datos adicionales | varía |
4 | uint8 | Motivo del cambio Este valor se debe determinar en función del estado de la conexión. En el caso de los casos de uso de audio LE, puede ser útil analizar la asignación entre el tipo de contexto de audio LE y el estado de conexión. Por ejemplo, el estado de conexión correspondiente a los asistentes de voz es 0x9(audio LE: transmisión de llamadas). Por lo tanto, el motivo del cambio para un cambio iniciado por los asistentes de voz debe ser 0x02. |
varía 0x00: No especificado 0x01: Contenido multimedia (p.ej., transmisión de A2DP, transmisión de contenido multimedia de LEA) 0x02: Llamada (p.ej., transmisión de HFP, transmisión de llamadas de LEA) |
5 | uint8 | Dispositivo de destino | varía 0x01: este dispositivo 0x02: otro dispositivo conectado |
6 - n | utf8 | Nombre del dispositivo de destino (si el dispositivo de destino es un buscador de interruptores de audio, usa el nombre al que envió el buscador; de lo contrario, usa el nombre de BT; si no corresponde, usa los últimos 2 bytes de su dirección) |
varía |
Tabla 4.3.3.2: Notifica el evento de cambio de multipunto
Cómo obtener el estado de la conexión
El buscador puede obtener el estado de conexión actual del proveedor:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Cómo obtener el estado de la conexión | 0x33 |
2 - 3 | uint16 | Longitud de los datos adicionales | 0 |
Tabla 4.3.3.3: Cómo obtener el estado de conexión
Cuando reciba este mensaje, el proveedor deberá responder con el código de mensaje 0x34, notificar el estado de la conexión.
Notificar el estado de la conexión
Como se define en la carga útil publicitaria de BLE, para los proveedores multipunto, si cambia el estado de la conexión, excepto por el cambio del paquete de publicidad, el proveedor también debe notificar el cambio a los buscadores conectados que usan la misma clave de cuenta. Si el proveedor está conectado a un buscador de interruptores de audio y a un buscador de interruptores que no es de audio, y el buscador de interruptores que no es de audio está activo, el proveedor también debe notificar al buscador de interruptores de audio conectado sobre el estado de la conexión (con la clave de cuenta del buscador).
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Notificar el estado de la conexión | 0x34 |
2 - 3 | uint16 | Longitud de los datos adicionales | varía |
4 | uint8 | Marca de dispositivo activo | varía 0x00: Este buscador es pasivo y el dispositivo activo usa la misma clave de cuenta. 0x01: Este buscador es el dispositivo activo. 0x02: Este buscador es pasivo y el dispositivo activo no es un buscador de interruptores de audio. |
5 - n | Estado de la conexión encriptada | varía | |
n+1 a n+8 | Nonce de mensaje | varía |
Tabla 4.3.3.4: Notifica el estado de la conexión
Mensaje de estado de la conexión encriptada
encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)
Donde:
La clave se deriva de la clave de la cuenta en uso. Consulta Anuncio resoluble aleatorio.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
IV es concat(Session_nonce, Message_nonce)
connection_status_raw_data = concat(connection_state, custom_data, connected_devices), que se define en la carga útil de publicidad de BLE. Ten en cuenta que no se debe incluir el byte para la longitud y el tipo de campo, ya que aquí tenemos el código de mensaje y la longitud de los datos.
Notificar que se inició la conexión del cambio de audio
Es posible que los proveedores de interruptores de audio deban saber si el interruptor de audio activa el cambio de conexión para tener reacciones diferentes, p.ej., inhabilitar los tonos de alerta para los eventos del interruptor de audio. El buscador envía un mensaje para notificar al proveedor que esta conexión fue una conexión iniciada por el interruptor de audio.
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Notificar que se inició la conexión del cambio de audio | 0x40 |
2 - 3 | uint16 | Longitud de los datos adicionales | 17 |
4 | uint8 | Indicación de conexión iniciada por el cambio de audio | varía 0: El interruptor de audio no activó esta conexión. 1: Esta fue una conexión iniciada por el interruptor de audio. |
De 5 a 12 | Nonce de mensaje | varía | |
De 13 a 20 | Código de autenticación de mensajes | varía |
Tabla 4.3.4.0: Notifica la conexión iniciada del interruptor de audio
Indica la clave de cuenta en uso
Si varias claves de cuenta en el buscador (p.ej., multiusuario) están asociadas con el proveedor, el buscador usará el siguiente mensaje para indicar qué clave de cuenta se está usando.
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Indica la clave de cuenta en uso | 0x41 |
2 - 3 | uint16 | Longitud de los datos adicionales | 22 |
4 a 9 | utf8 | Cadena en uso | UTF8 ("en uso") |
10 - 17 | Nonce de mensaje | varía | |
Entre 18 y 25 años | Código de autenticación de mensajes | varía |
Tabla 4.3.4.1: Clave de cuenta de uso
Cuando recibe este mensaje, el proveedor puede saber qué clave de cuenta se está usando verificando el código de autenticación del mensaje.
Envía datos personalizados
El buscador de interruptores de audio activo puede encapsular la información (p.ej., el uso de audio) de la transmisión de audio en un byte de datos personalizado y enviarla al proveedor con el siguiente mensaje:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Envía datos personalizados | 0x42 |
2 - 3 | uint16 | Longitud de los datos adicionales | 17 |
4 | uint8 | Datos personalizados | varía |
De 5 a 12 | Nonce de mensaje | varía | |
De 13 a 20 | Código de autenticación de mensajes | varía |
Tabla 4.3.4.2: Envía datos personalizados
Cuando reciba los datos personalizados, el proveedor actualizará el paquete de publicidad para incluirlos. En el caso de un proveedor multipunto, también debe notificar el cambio de estado de la conexión a otro buscador conectado con la misma clave de cuenta.
Cómo establecer el destino de la conexión de caída
En los auriculares multipunto, si la conexión preferida que se debe desconectar no es la que se usó menos recientemente, los buscadores de interruptores de audio pueden indicarle al proveedor qué dispositivo desconectar con el siguiente mensaje:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Cómo establecer el destino de la conexión de caída | 0x43 |
2 - 3 | uint16 | Longitud de los datos adicionales | 17 |
4 | uint8 | Dispositivo conectado de destino que se soltará | varía 1: este dispositivo |
De 5 a 12 | Nonce de mensaje | varía | |
De 13 a 20 | Código de autenticación de mensajes | varía |
Tabla 4.3.4.3: Establece el destino de la conexión de descarte