Seleção de áudio
À medida que os usuários utilizam cada vez mais vários dispositivos de fonte de áudio para realizar suas tarefas diárias, há uma demanda crescente por uma solução mais simples para gerenciar fones de ouvido que podem ser usados em vários dispositivos. A seleção de áudio faz a transição perfeita para as conexões dos fones de ouvido entre dispositivos com base na atividade do usuário (por exemplo, assistir a um filme) e priorizadas (por exemplo, uma ligação recebida).
Princípios da UX
- A troca de conexão precisa ser rápida e baseada na ação do usuário.
- A alternância de conexão deve ser transparente para os usuários, permitindo que eles controlar/reverter caso isso seja indesejável.
- A troca de aparelho precisa respeitar a privacidade do usuário.
Papéis
Buscador de alternância de áudio: o buscador é um dispositivo de fonte de áudio (por exemplo, smartphone ou tablet), procurando um fone de ouvido por perto para se conectar, quando aplicável.
Provedor de seleção de áudio: o provedor normalmente é um fone de ouvido que anuncia seu status de presença e conexão para que os buscadores tomem decisões de troca.
Visão geral dos requisitos
Para conseguir a comutação inteligente, os provedores precisam aderir aos seguintes requisitos:
Nome | Descrição | Requisitos | Obrigatório? |
---|---|---|---|
Verificação de página | Para aceitar uma nova solicitação de conexão de outro buscador quando já houver uma conexão. Para provedores de ponto único:
|
O modo de verificação da página de baixa latência (o intervalo de verificação não deve ser maior do que 640 ms) é necessário para melhorar o desempenho. Para escolher entre a duração da bateria e o desempenho da troca, o provedor pode ter um modo de verificação de página padrão na maioria dos casos (modo de baixo consumo de energia, o intervalo de verificação não deve ser maior do que 1.280 ms). No entanto, o modo de baixa latência precisa ser usado nas seguintes situações:
|
Obrigatório |
Histórico de conexões | Para voltar à conexão anterior e retomar a reprodução, se for o caso. A mudança será acionada pelas comunicações pelas APIs Message Stream. O evento de pausa de áudio precisa ser incluído na gravação para retomar a reprodução, se for o caso. |
Manter o histórico de conexões e implementar as APIs Message Stream. | Obrigatório |
Status da conexão | Para que os Usuários que procuram a conexão façam a avaliação de troca de conexão.O status da conexão inclui:
|
Incluir o status da conexão na divulgação de BLE e no stream de mensagens. | Obrigatório |
Mudança nos recursos do ambiente de execução | A seleção de áudio pode ser ativada com o upgrade do firmware no provedor. Portanto, os recursos precisam ser sincronizados entre o Seeker e o provedor no tempo de execução. | Implemente as APIs Message Stream para acessar recursos de ambiente de execução. | Obrigatório |
Regras de alternância configuráveis | Permita que o Seeker defina a prioridade entre o streaming de áudio ativo atual e as novas solicitações de streaming de áudio usando as configurações de preferência do usuário. Por exemplo, o Seeker pode fornecer configurações de interface para permitir que os usuários ativem/desativem a alternância automática entre streaming de mídia e chamadas. A pessoa que busca a troca de áudio vai definir e receber a regra de alternância pelo stream de mensagens. |
Somente provedores multiponto. Implemente APIs de stream de mensagens para configurar as regras de alternância entre dispositivos conectados. |
Opcional |
Troca de dispositivo ativa | Permite que o buscador de seleção de áudio simule a alternância de áudio entre dispositivos conectados. No lado do buscador de seleção de áudio, pode haver uma interface para que os usuários alternem facilmente entre dispositivos conectados. |
Somente provedores multiponto. Implemente APIs de stream de mensagens para o usuário que busca a troca de áudio a fim de determinar a fonte de áudio ativa entre os dispositivos conectados. |
Obrigatório |
Notificação de troca multiponto | Permita que o buscador de seleção de áudio mostre a notificação de troca de áudio. | Somente provedores multiponto. Implemente APIs de stream de mensagens para notificar os usuários que buscam a troca de áudio conectados quando uma alternância multiponto estiver ocorrendo. |
Obrigatório |
Payload de publicidade
O Provedor deverá incluir seu status atual da conexão no anúncio, criada com base nos dados da conta com Pareamento rápido descritos em Publicidade: quando não for detectável.
Observe que a versão da tabela 4.2 é 0x1.
Campo de status da conexão
Octeto | Tipo de dado | Descrição | Valor | Obrigatório? |
---|---|---|---|---|
0 | uint8 |
Comprimento e tipo do campo 0bLLLLTTTT
|
0bLLLL0101
|
Obrigatório |
1 | uint8 |
Estado da conexão 0bHAFRSSSS
|
0bHAFRSSSS
|
Obrigatório |
2 | uint8 |
Dados personalizados Atualmente, ele contém apenas o tipo de conteúdo que é usado para descrever o uso do streaming de áudio atual. O candidato a enviará ao Provedor. |
O valor é enviado pelo buscador de streaming ativo atual para o provedor pelo fluxo de mensagens. 0 se a transmissão ativa atual não for do Seeker. | Obrigatório |
3 – var | Bitmap de dispositivos conectados Um bitmap que mostra quais dispositivos estão conectados ao provedor. Todos os dispositivos vinculados são organizados em ordem, um bit para um dispositivo conectado. O tamanho dependerá de quantos dispositivos vinculados do provedor houver. |
O bit mapeado é 1 se o dispositivo estiver conectado ao provedor no momento. Caso contrário, é 0. Consulte Bitmap de dispositivo conectado para mais detalhes |
Opcional |
Tabela 4.1:dados brutos do campo de status da conexão
Sinalizações de conexão
0bH = detecção na cabeça
- 1, em andamento
- 0, caso contrário, não está na cabeça ou não há sensor OHD
0bA = disponibilidade da conexão
- 1, há uma conexão disponível
- 0. Caso contrário,
0bF = modo de foco
- 1, no modo em foco agora, a troca de conexão não é permitida para mídia uso, por exemplo, sem mudança de A2DP para A2DP
- 0. Caso contrário,
0bR = reconectado automaticamente
- 1, se a conexão atual for reconectada automaticamente pelo provedor, ou seja, não está conectado por usuários (para multiponto, se um dos é reconectado automaticamente, ele deve ser definido como 1)
- 0. Caso contrário,
Estado da conexão
- 0x0: sem conexão
- 0 x 1: paginação
- 0x2: conectado, mas sem transferência de dados
- 0x3: transferência de dados que não são de áudio (somente quando alternável, se não for, usando 0xF)
- 0 x 4: streaming A2DP, AVRCP não aplicável
- 0 x 5: streaming A2DP e reprodução de AVRCP
- 0 x 6: transmissão HFP (chamada de telefone/voip), incluindo toque em banda e fora dele
- 0 x 7: LE Audio - streaming de mídia sem controle
- 0x8: LE Audio — streaming de mídia com controle
- 0 x 9: LE Audio - streaming de chamadas
- 0xA: LE Audio - transmissão
- 0xF: desativar a chave de conexão temporariamente (por exemplo, atualização de firmware)
Tipo de contexto de LE Audio e estado da conexão
Recomendar que o provedor de áudio LE deve lidar com todos os tipos de contexto especificados em Números atribuídos 6.12.3 (a menos que o provedor não ofereça suporte explicitamente a um determinado tipo de contexto) e mapeie o tipo de contexto para o estado da conexão, conforme mostrado abaixo.
- Conversacional: 0x9
- Mídia: 0 x 8
- Jogo: 0 x 7
- Instrutivo: 0 x 7
- Assistentes por voz: 0x9
- Ao vivo: 0x9
- Efeitos sonoros: 0x2
- Notificações: 0 x 2
- Toque: 0x9
- Alertas: 0 x 7
- Alarme de emergência: 0x9
Para o tipo de contexto LE Audio misto, como tocar mídia durante o chamada, o Provedor deverá usar o estado da conexão com a maior prioridade, ou seja, usar 0 x 9 (chamada) para o cenário acima em vez de 0 x 8 (mídia).
Bitmap de dispositivo conectado
Para evitar trocas indesejadas de conexão, o buscador pode precisar saber dispositivo(s) em que o fone de ouvido está conectado no momento. Por exemplo, quando o fone de ouvido está conectado ao telefone, o usuário não quer ser interrompido pelo mudança de conexão quando um membro da família inicia o YouTube na tablet.
Como esse bitmap é anônimo, o buscador não consegue saber quais os dispositivos são vinculados ao provedor. Por exemplo, considere cinco dispositivos vinculados:
- 0: laptop (0bx0000000)
- 1: telefoneA (0b0x000000)
- 2: telefoneB (0b00x00000)
- 3: tablet (0b000x0000)
- 4: TV (0b0000x000)
Se os dispositivos conectados atuais forem um laptop e um tablet, o valor do atributo bitmap será 0b10010000. A alteração do pedido será aceitável se for inevitável, Por exemplo: Quando os usuários redefinirem o fone de ouvido para a configuração original ou a contagem de dispositivos vinculados atingir o limite máximo.
Anúncio solucionável aleatório
Para evitar o rastreamento e respeitar a privacidade do usuário, o provedor deve alternar e criptografe o campo pela chave de conta usando AES-CTR:
encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)
onde
A chave é derivada da chave da conta em uso, que é definido na próxima seção.
A chave é gerada pela função HKDF, IETF RFC 5869, usando a linguagem SHA-256 função hash.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
O provedor deverá usar a chave da conta original aqui, ou seja, o primeiro byte da chave é 0x04, não incluído no padrão de uso.
IV (vetor inicial) é o sal de dois bytes dos dados da chave da conta com zero padding, isto é, IV é concat(sal, ZEROs de 14 bytes).
Os dados brutos de status da conexão estão definidos na tabela 4.1, se o o status de conexão mudar, o sal e o RPA devem ser gerados novamente mesmo período de publicidade.
Isso faz com que o campo de status da conexão criptografada gire ao mesmo tempo que o Os dados da chave da conta são alternados.
A publicidade BLE será estruturada da seguinte forma:
Octeto | Tipo de dado | Descrição | Valor | Obrigatório? |
---|---|---|---|---|
0 | uint8 |
Versão e sinalizações | 0x10 | Obrigatório |
1 — t | Dados da chave da conta | varia | Obrigatório | |
t+1 – s | Dados da bateria | varia | Opcional | |
s+1: var | Dados que podem ser resolvidos aleatoriamente | varia | Obrigatório se a lista de chaves da conta não estiver vazia. Caso contrário,será excluída. |
Tabela 4.2:divulgação de BLE com dados que podem ser resolvidos aleatoriamente
Os dados que podem ser resolvidos aleatoriamente contêm:
Octeto | Tipo de dado | Descrição | Valor | Obrigatório? |
---|---|---|---|---|
0 | uint8 |
Comprimento e tipo do campo 0bLLLLTTTT
|
0bLLLL0110
|
Obrigatório |
1 – var | Dados criptografados | varia | Obrigatório |
Tabela 4.2.1:dados solucionáveis aleatórios
Por exemplo, se os dados de resolução aleatória tiverem uma conexão criptografada. status, o resultado descriptografado será o campo de status da conexão.
Para evitar adulterações, os dados da chave da conta acima devem ser levemente modificados quando esses dados são incluídos no anúncio. Normalmente, quando criar o filtro de chave de conta, um valor V será produzido combinando o valor filtro-chave com um sal. Em vez disso, quando os dados resolvíveis aleatórios também são anunciado, o valor V deve ser construído da seguinte forma:
V = concat(account_key, salt, random_resolvable_data)
Se os dados da bateria e os dados de resolução aleatória estiverem sendo anunciados, o V deverá ser construído da seguinte forma:
V = concat(account_key, salt, battery_data, random_resolvable_data)
Chave da conta em uso
A troca de conexão é baseada em conta, portanto, o provedor deve incluir o informações da conta da conexão atual no anúncio BLE. Se o dispositivo conectado atual for um Usuário que busca a troca de áudio, o provedor deve ser capaz para obter a chave da conta associada a esse usuário e usá-la para criptografar o campo de status da conexão. Se a fonte de áudio conectada não for áudio switch Seeker, o provedor deverá usar a chave de conta usada mais recentemente.
Antes de calcular o filtro de chave da conta, o provedor precisa modificar o primeiro das chaves de conta para incluir um dos seguintes padrões de uso:
- 0b00000100
Esta chave de conta não está em uso.
Esse é o padrão (consulte Chave de conta). - 0b00000101
Essa é a chave da conta usada mais recentemente.
O campo de status da conexão é criptografado por esta chave de conta. Não há informações importantes sobre o estado atual da conexão, isso pode significar que não dispositivos conectados ou o dispositivo conectado não é um Buscador de seleção de áudio. - 0b00000110
Essa chave de conta é a que está em uso.
O campo de status da conexão é criptografado por essa chave de conta, e a dispositivo conectado está associado a esta chave de conta.
Esquema para o payload de seleção de áudio
A figura abaixo mostra o esquema do payload da troca de áudio.
![](https://developers-dot-devsite-v2-prod.appspot.com/nearby/fast-pair/images/SASS-ble-payload-schematic.png?authuser=5&hl=pt)
Mensagens
Quando conectados, o Seeker e o Provedor podem usar o stream de mensagens para sincronizar o áudio do switch, acionar um switch de conexão, configurar e obter a preferência, notificar o status da conexão e assim por diante. Criamos um grupo de mensagens e códigos de mensagem específicos para a seleção de áudio, conforme mostrado abaixo.
Nome do grupo de mensagens | Valor |
---|---|
Troca de áudio | 0x07 |
Detalhes adicionais para cada código de mensagem estão incluídos nas seções a seguir.
Nome do código da mensagem | Valor | Somente multiponto | Remetente | Participante | Encrypt | MAC | CONF |
---|---|---|---|---|---|---|---|
Usar o recurso Seleção de áudio | 0x10 | N | Ambos | Ambos, via código 0x11 | N | N | N |
Recurso de notificação da seleção de áudio | 0x11 | N | Ambos | Ambos | N | S | S |
Definir estado multiponto | 0x12 | S | Pessoas que procuram | Provedor | N | S | S |
Definir a preferência de troca | 0x20 | S | Pessoas que procuram | Provedor | N | S | S |
Aumentar as preferências de troca | 0x21 | S | Pessoas que procuram | Provedor, via código 0x22 | N | N | N |
Notificar sobre preferência de troca | 0x22 | S | Provedor | Pessoas que procuram | N | N | N |
Trocar a fonte de áudio ativa(para o dispositivo conectado) | 0x30 | S | Pessoas que procuram | Provedor | N | S | S |
Voltar | 0x31 | N | Pessoas que procuram | Provedor | N | S | S |
Notificar evento de switch multiponto | 0x32 | S | Provedor | Pessoas que procuram | N | N | N |
Conferir o status da conexão | 0x33 | S | Pessoas que procuram | Provedor, via código 0x34 | N | N | N |
Notificar o status da conexão | 0x34 | S | Provedor | Pessoas que procuram | S | N | N |
Notificar a conexão da seleção de áudio iniciada | 0x40 | N | Pessoas que procuram | Provedor | N | S | S |
Indicar a chave da conta em uso | 0x41 | N | Pessoas que procuram | Provedor | N | S | S |
Enviar dados personalizados | 0x42 | N | Pessoas que procuram | Provedor | N | S | S |
Definir destino da conexão de descarte | 0x43 | S | Pessoas que procuram | Provedor | N | S | S |
Tabela 4.3:Mensagens de seleção de áudio
MAC das mensagens de seleção de áudio
Para fornecer a autenticação de mensagens, todas as mensagens de seleção de áudio com mensagens os dados enviados do Seeker para o Provedor exigem um Código de autenticação de mensagem. Quando uma mensagem com MAC é recebida, ela deve ser confirmada para que o solicitante saiba se o provedor reagiu ou não à mensagem.
Se a autenticação da mensagem for bem-sucedida, o provedor enviará o ACK para o mensagem:
Octeto | Tipo de dados | Descrição | Valor |
---|---|---|---|
0 | uint8 | Confirmação | 0xFF |
1 | uint8 | CONF | 0x01 |
2 a 3 | uint16 | Tamanho dos dados adicionais | varia |
4 | uint8 | Troca de áudio | 0x07 |
5 | uint8 | Código da mensagem para seleção de áudio | varia |
6 – s | Outros dados | varia |
Em caso de falha, o Provedor enviará o NAK para a mensagem:
Octeto | Tipo de dados | Descrição | Valor |
---|---|---|---|
0 | uint8 | Confirmação | 0xFF |
1 | uint8 | NAK | 0x02 |
2 a 3 | uint16 | Tamanho dos dados adicionais | 0x0003 |
4 | uint8 | Motivo do erro | varia |
5 | uint8 | Troca de áudio | 0x07 |
6 | uint8 | Código da mensagem para seleção de áudio | varia |
Observe que, se o provedor for o remetente, o MAC não será necessário.
Acessar o recurso Seleção de áudio
O provedor de seleção de áudio e o buscador podem verificar se o Pareamento rápido conectado O buscador/provedor oferece suporte à seleção de áudio usando a mensagem abaixo:
Octeto | Tipo de dados | Descrição | Valor |
---|---|---|---|
0 | uint8 | Troca de áudio | 0x07 |
1 | uint8 | Acessar o recurso Seleção de áudio | 0x10 |
2 a 3 | uint16 | Tamanho dos dados adicionais | 0 |
Tabela 4.3.1.0:receber capacidade da seleção de áudio
Capacidade de notificação da seleção de áudio
Ao receber o recurso "get" da mensagem para seleção de áudio código, o buscador/provedor de seleção de áudio responderá com uma das seguintes sinalizações:
Octeto | Tipo de dados | Descrição | Valor |
---|---|---|---|
0 | uint8 | Troca de áudio | 0x07 |
1 | uint8 | Capacidade de notificação da seleção de áudio | 0x11 |
2 a 3 | uint16 | Tamanho dos dados adicionais | 20 se for enviado pelo buscador 4 se for enviado pelo provedor |
4 a 5 | uint16 | Código da versão da seleção de áudio | Um valor diferente de zero significa que ele é compatível com a seleção de áudio. O código da versão atual (com a melhoria de segurança) é 0x0102. 0x0000 ou nenhuma resposta em 1 segundo significa que a seleção de áudio não é compatível com este dispositivo |
6 a 7 | flags | Sinalizações de recurso de alternância de áudio do provedor. Se for enviado pelo Seeker, esses dois bytes precisarão ser ignorados. |
varia Consulte Sinalizações de capacidade de alternância de áudio |
8 a 15 | Valor de uso único da mensagem Obrigatório apenas quando enviado pelo Seeker |
varia | |
16 a 23 | Código de autenticação de mensagem Obrigatório apenas quando enviado pelo Seeker |
varia |
Tabela 4.3.1.1:recurso de notificação da seleção de áudio
Sinalizações do recurso de seleção de áudio
Bit 0 (octeto 6, MSB): estado do interruptor de áudio
- 1, se o estado da seleção de áudio estiver ativado
- 0. Caso contrário,
Bit 1: configuração multiponto
- 1, se o dispositivo for compatível com multiponto e for possível alternar entre ativado e desativado
- 0, caso contrário (não é compatível com multiponto ou o multiponto está sempre ativado)
Bit 2: estado atual multiponto
- 1, se o multiponto estiver ativado
- 0. Caso contrário,
Parte 3: detecção da cabeça
- 1, se este dispositivo oferecer suporte à detecção na cabeça (mesmo se esse recurso estiver desativado agora)
- 0. Caso contrário,
Bit 4: estado atual da detecção da cabeça
- 1, se a detecção da cabeça estiver ativada
- 0, caso contrário (não é compatível com a detecção a cabeça ou a detecção a cabeça não for compatível desativado)
Todos os outros bits são reservados, o padrão é 0.
Definir estado multiponto
Em pessoas que buscam a seleção de áudio, podemos oferecer a configuração para os usuários ativarem/desativarem a funcionalidade multiponto. O Seeker definirá o estado multiponto como Provedor usando a mensagem abaixo:
Octeto | Tipo de dados | Descrição | Valor |
---|---|---|---|
0 | uint8 | Troca de áudio | 0x07 |
1 | uint8 | Definir estado multiponto | 0x12 |
2 a 3 | uint16 | Tamanho dos dados adicionais | 17 |
4 | uint8 | Estado multiponto | 0: desativar o multiponto 1: ativar o multiponto |
5 a 12 | Valor de uso único da mensagem | varia | |
13 a 20 | Código de autenticação de mensagens | varia |
Tabela 4.3.1.2:definir o estado multiponto
Definir preferência de troca
Os usuários que buscam a seleção de áudio podem modificar a preferência de alternância do modo multiponto e definir ao Provedor usando a mensagem abaixo:
Octeto | Tipo de dados | Descrição | Valor |
---|---|---|---|
0 | uint8 | Troca de áudio | 0x07 |
1 | uint8 | Definir preferência de troca | 0x20 |
2 a 3 | uint16 | Tamanho dos dados adicionais | 18 |
4 | flags | Preferência de alteração | varia Consulte a sinalização de preferência de alternância multiponto |
5 | Configurações avançadas de mudança Este byte está reservado. O valor padrão é 0 |
varia | |
Ensino fundamental (séries finais)/médio | Valor de uso único da mensagem | varia | |
14 a 21 | Código de autenticação de mensagens | varia |
Tabela 4.3.2.0:definir a preferência de troca
Sinalização de preferência de alternância multiponto
- Bit 0 (MSB): A2DP vs A2DP (padrão 0)
- Bit 1: HFP x HFP (padrão 0)
- Bit 2: A2DP x HFP (padrão 0)
- Bit 3: HFP x A2DP (padrão 1)
- Parte 4 a 7: reservado
- Acima representa como "nova solicitação de perfil" x "perfil ativo atual"
- 0 para não trocar
- 1 para trocar
Acessar preferência de troca
Os usuários que buscam a troca de áudio podem consultar as preferências de alternância de multiponto no Provedor usando a mensagem abaixo:
Octeto | Tipo de dados | Descrição | Valor |
---|---|---|---|
0 | uint8 | Troca de áudio | 0x07 |
1 | uint8 | Acessar a configuração de alternância | 0x21 |
2 a 3 | uint16 | Tamanho dos dados adicionais | 0 |
Tabela 4.3.2.1:entender as preferências de troca
Notificar sobre preferência de troca
Octeto | Tipo de dados | Descrição | Valor |
---|---|---|---|
0 | uint8 | Troca de áudio | 0x07 |
1 | uint8 | Notificar sobre preferência de troca | 0x22 |
2 a 3 | uint16 | Tamanho dos dados adicionais | 2 |
4 | flags | Como alternar sinalizações de preferência | varia Consulte a sinalização de preferência de alternância multiponto |
5 | Configurações avançadas de mudança Este byte está reservado. O valor padrão deve ser 0 |
varia |
Tabela 4.3.2.2:notificação de preferência de troca
Trocar a fonte de áudio ativa (para o dispositivo conectado)
Os usuários que buscam a troca de áudio podem solicitar que o provedor multiponto mude o fonte de áudio entre dispositivos conectados usando a mensagem abaixo:
Octeto | Tipo de dados | Descrição | Valor |
---|---|---|---|
0 | uint8 | Troca de áudio | 0x07 |
1 | uint8 | Trocar a fonte de áudio ativa (para o dispositivo conectado) | 0x30 |
2 a 3 | uint16 | Tamanho dos dados adicionais | 17 |
4 | flags | Alternando sinalizações de eventos ativos da fonte de áudio | varia Consulte Como alternar o evento ativo da fonte de áudio |
5 a 12 | Valor de uso único da mensagem | varia | |
13 a 20 | Código de autenticação de mensagens | varia |
Tabela 4.3.3.0:alternar a fonte de áudio ativa (para o dispositivo conectado)
Alternando o evento da fonte de áudio ativa
- Bit 0 (MSB): 1 interruptor para este dispositivo, 0 para o segundo dispositivo conectado
- Bit 1: 1 retoma a reprodução no interruptor para o dispositivo depois da troca. Caso contrário, é 0. Retomar a reprodução significa que o provedor envia uma notificação PLAY ao buscador pelo perfil AVRCP. Se o estado anterior (antes da mudança) não era PLAY, o provedor deve ignorar essa sinalização.
- Bit 2: 1 rejeita a SCO em um dispositivo desligado, 0 caso contrário
- Bit 3: 1 desconecta o Bluetooth ao ligar o dispositivo. Caso contrário, é 0.
- Bit 4 - 7: reservado.
Os usuários que procuram a seleção de áudio nem sempre sabem o próprio estado corretamente. para o provedor receber um "trocar para este dispositivo" quando o candidato é já é o dispositivo ativo. Nesse caso, para mostrar a interface correta no Seeker, O provedor pode enviar um NAK com o motivo do erro, 0 x 4 — ação do dispositivo redundante.
No caso de um provedor de áudio de baixo consumo (LE Audio, na sigla em inglês) que tenha mais de um membro, o provedor precisa: desconecta todos os membros do Seeker; caso contrário, a pilha Bluetooth do O usuário se reconectava ao provedor.
Voltar (para o dispositivo desconectado)
Se a troca de conexão for indesejada, os usuários poderão revertê-la e, em certos casos, faz sentido restaurar a conexão de áudio para minimizar interrupção. O Seeker usará a mensagem abaixo para acionar a alternância de volta:
Octeto | Tipo de dados | Descrição | Valor |
---|---|---|---|
0 | uint8 | Troca de áudio | 0x07 |
1 | uint8 | Voltar (para o dispositivo desconectado) | 0x31 |
2 a 3 | uint16 | Tamanho dos dados adicionais | 17 |
4 | uint8 | Alternar evento | varia 0x01: volte 0x02: volte e retome a reprodução |
5 a 12 | Valor de uso único da mensagem | varia | |
13 a 20 | Código de autenticação de mensagens | varia |
Tabela 4.3.3.1:voltar para o dispositivo desconectado
Para provedores multiponto, para realizar uma troca de conexão, o provedor pode descartar a conexão com um dispositivo de fonte de áudio e pausar a sessão de áudio no outro fonte de áudio. Por exemplo, suponha que o fone de ouvido multiponto esteja conectado a um tablet e um terceiro dispositivo compatível para seleção de áudio. O usuário está assistindo a um vídeo em no tablet quando há uma chamada recebida no celular. O smartphone será acionado um interruptor de conexão no fone de ouvido, que precisa encaixar o terceiro dispositivo para conectar ao telefone e, ao mesmo tempo, pausar a mídia no tablet para receber o toque do telefone. Se o usuário recusar durante a chamada, o telefone pode pedir que o fone de ouvido "volte e retome a reprodução". Ao receber essa solicitação, o fone de ouvido precisa se reconectar ao terceiro dispositivo. retomar a reprodução do vídeo pausado no tablet.
Notificar evento de switch multiponto
Para informar os usuários sobre um evento de switch multiponto, a seleção de áudio A pessoa pode mostrar uma notificação aos usuários. O provedor deve notificar os usuários conectados Pessoas que procuram a seleção de áudio sobre o evento de alternância de áudio.
Octeto | Tipo de dados | Descrição | Valor |
---|---|---|---|
0 | uint8 | Troca de áudio | 0x07 |
1 | uint8 | Notificar evento de alternância de vários pontos O provedor precisa enviá-lo em todos os interruptores, incluindo o buscador de mudança de áudio para o buscador de mudança de áudio, o buscador de mudança de áudio para o buscador de mudança de áudio e o buscador de mudança de áudio para o buscador de mudança de áudio. |
0x32 |
2 a 3 | uint16 | Tamanho dos dados adicionais | varia |
4 | uint8 | Motivo da troca Esse valor precisa ser determinado com base no Estado da conexão. Para casos de uso de LE Audio, analisar o mapeamento entre Tipo de contexto de LE Audio e o estado da conexão pode ser útil. Por exemplo, o estado da conexão correspondente aos assistentes de voz é 0x9(LE audio - streaming de chamadas). Portanto, o motivo da mudança iniciada pelo Assistente por voz precisa ser 0x02. |
varia 0x00: não especificado 0x01: mídia (por exemplo, streaming A2DP, streaming de mídia LEA) 0x02: chamada (por exemplo, streaming HFP, streaming de chamadas LEA) |
5 | uint8 | Dispositivo de destino | varia 0x01: este dispositivo 0x02: outro dispositivo conectado |
6 – n | utf8 | Nome do dispositivo de destino se o dispositivo de destino for Buscador de seleção de áudio, usando o nome para o qual o usuário foi enviado. Caso contrário, usará o nome do BT, se não aplicável, usando os últimos 2 bytes do endereço. |
varia |
Tabela 4.3.3.2:notificar evento de switch multiponto
Conferir o status da conexão
O buscador pode obter o status atual da conexão do provedor:
Octeto | Tipo de dados | Descrição | Valor |
---|---|---|---|
0 | uint8 | Troca de áudio | 0x07 |
1 | uint8 | Conferir o status da conexão | 0x33 |
2 a 3 | uint16 | Tamanho dos dados adicionais | 0 |
Tabela 4.3.3.3:conferir o status da conexão
Ao receber esta mensagem, o Provedor responderá usando o código da mensagem 0x34, notificar o status da conexão.
Notificar o status da conexão
Conforme definido no payload de publicidade de BLE, para provedores multiponto, se o status da conexão mudar, exceto para alteração pacote de publicidade, o Provedor também deverá notificar os Seekers conectados que estão usando a mesma chave de conta sobre a mudança. Se o provedor estiver conectado com um buscador de seleção de áudio e um buscador de seleção sem áudio, se o switch está ativo, o provedor também deve notificar o usuário alternar Seeker sobre o status da conexão (usando a chave de conta do Seeker).
Octeto | Tipo de dados | Descrição | Valor |
---|---|---|---|
0 | uint8 | Troca de áudio | 0x07 |
1 | uint8 | Notificar o status da conexão | 0x34 |
2 a 3 | uint16 | Tamanho dos dados adicionais | varia |
4 | uint8 | Sinalização de dispositivo ativo | varia 0x00: este Seeker é passivo, e o dispositivo ativo está usando a mesma chave de conta 0x01: ele é o dispositivo ativo 0x02: o Seeker é passivo, e o dispositivo ativo não é um buscador de interruptor de áudio. |
5 – n | Status da conexão criptografada | varia | |
n+1 - n+8 | Valor de uso único da mensagem | varia |
Tabela 4.3.3.4:notificar o status da conexão
Mensagem de status da conexão criptografada
encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)
em que:
A chave é derivada da chave de conta em uso. Consulte Publicidade solucionável aleatória.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
IV é concat(Session_nonce, Message_nonce)
Connection_status_raw_data = concat(connection_state, custom_data, connect_devices), definido em BLE payload de publicidade O byte do comprimento e do tipo do campo não deve ser incluído, porque temos o código da mensagem e o comprimento dos dados aqui.
Notificar a conexão da seleção de áudio iniciada
Os provedores de seleção de áudio podem precisar saber se a alternância de conexão é acionada por seleção de áudio para ter reações diferentes, por exemplo, desativar ícones auditivos para áudio eventos de alternância. O Seeker envia uma mensagem para notificar o Provedor de que este foi uma conexão iniciada pela seleção de áudio.
Octeto | Tipo de dados | Descrição | Valor |
---|---|---|---|
0 | uint8 | Troca de áudio | 0x07 |
1 | uint8 | Notificar a conexão da seleção de áudio iniciada | 0x40 |
2 a 3 | uint16 | Tamanho dos dados adicionais | 17 |
4 | uint8 | Indicação de conexão iniciada pela seleção de áudio | varia 0: essa conexão não foi acionada pela seleção de áudio 1: essa conexão foi iniciada pela seleção de áudio |
5 a 12 | Valor de uso único da mensagem | varia | |
13 a 20 | Código de autenticação de mensagens | varia |
Tabela 4.3.4.0:notificação de conexão iniciada pela seleção de áudio
Indicar a chave da conta em uso
Se várias chaves de conta no Seeker (por exemplo, múltiplos usuários) estiverem associadas a o provedor, o buscador usará a mensagem abaixo para indicar qual conta está em uso.
Octeto | Tipo de dados | Descrição | Valor |
---|---|---|---|
0 | uint8 | Troca de áudio | 0x07 |
1 | uint8 | Indicar a chave da conta em uso | 0x41 |
2 a 3 | uint16 | Tamanho dos dados adicionais | 22 |
4 a 9 | utf8 | String em uso | UTF8 ("em uso") |
10 a 17 | Valor de uso único da mensagem | varia | |
18 a 25 | Código de autenticação de mensagens | varia |
Tabela 4.3.4.1:indicar a chave da conta em uso
Ao receber essa mensagem, o provedor pode saber qual chave de conta está em uso verificando o código de autenticação da mensagem.
Enviar dados personalizados
O Buscador de seleção de áudio ativo pode encapsular as informações (por exemplo, uso) de stream de áudio em byte de dados personalizado e enviá-lo ao provedor usando esta mensagem:
Octeto | Tipo de dados | Descrição | Valor |
---|---|---|---|
0 | uint8 | Troca de áudio | 0x07 |
1 | uint8 | Enviar dados personalizados | 0x42 |
2 a 3 | uint16 | Tamanho dos dados adicionais | 17 |
4 | uint8 | Dados personalizados | varia |
5 a 12 | Valor de uso único da mensagem | varia | |
13 a 20 | Código de autenticação de mensagens | varia |
Tabela 4.3.4.2:enviar dados personalizados
Ao receber os dados personalizados, o Provedor atualizará o pacote de publicidade para incluir os dados personalizados. Para um provedor multiponto, ele também deve notificar o mudança do status da conexão para outro Seeker conectado usando a mesma chave de conta.
Definir destino da conexão de descarte
Em fones de ouvido multiponto, se a conexão preferida para ser eliminada não for a usado pela menos recentemente, os usuários que procuram a seleção de áudio podem informar ao provedor qual dispositivo usando a mensagem abaixo:
Octeto | Tipo de dados | Descrição | Valor |
---|---|---|---|
0 | uint8 | Troca de áudio | 0x07 |
1 | uint8 | Definir destino da conexão de descarte | 0x43 |
2 a 3 | uint16 | Tamanho dos dados adicionais | 17 |
4 | uint8 | Dispositivo conectado de destino a ser descartado | varia 1: este dispositivo |
5 a 12 | Valor de uso único da mensagem | varia | |
13 a 20 | Código de autenticação de mensagens | varia |
Tabela 4.3.4.3:definir destino da conexão de descarte
Implementação de referência
Consulte a biblioteca de SDKs incorporados por perto para conferir a implementação de referência.