Cambio audio
Poiché gli utenti utilizzano sempre più dispositivi di origine audio per svolgere le proprie attività quotidiane, è in crescita la domanda di una soluzione più semplice per gestire l'utilizzo delle cuffie su più dispositivi. La funzionalità Cambio audio gestisce in modo fluido il passaggio delle connessioni delle cuffie tra i dispositivi in base all'attività dell'utente (ad esempio l'avvio di un film) e agli eventi con priorità (ad esempio una chiamata in arrivo).
Principi UX
- Il passaggio da una connessione all'altra deve essere rapido e basarsi sull'azione dell'utente.
- Il passaggio da una connessione all'altra deve essere trasparente per gli utenti, che devono poter controllare/ripristinare la connessione precedente se il passaggio non è auspicabile.
- Il passaggio deve rispettare la privacy dell'utente.
Ruoli
Audio Switch Seeker: il cercatore è un dispositivo di origine audio (ad esempio uno smartphone o un tablet) che cerca una cuffia nelle vicinanze a cui connettersi, se applicabile.
Fornitore di switch audio: in genere, il fornitore è un auricolare che pubblicizza la sua presenza e lo stato di connessione per consentire ai Cercatori di prendere decisioni di passaggio.
Panoramica dei requisiti
Per poter usufruire del passaggio intelligente, i fornitori devono rispettare i seguenti requisiti:
Nome | Descrizione | Requisiti | Obbligatorio? |
---|---|---|---|
Scansione pagina | Per accettare una nuova richiesta di connessione da un altro cercatore quando esiste già una connessione. Per i fornitori single-point:
|
Per migliorare le prestazioni, è necessaria la modalità di scansione delle pagine a bassa latenza (l'intervallo di scansione non deve superare i 640 ms). Per trovare un compromesso tra la durata della batteria e le prestazioni del passaggio, il fornitore può avere una modalità di scansione delle pagine predefinita per la maggior parte dei casi (modalità a basso consumo, l'intervallo di scansione non deve superare i 1280 ms). Tuttavia, la modalità a bassa latenza deve essere utilizzata nelle seguenti situazioni:
|
Obbligatorio |
Cronologia delle connessioni | Per tornare alla connessione precedente e riprendere la riproduzione, se applicabile. Il ritorno alla connessione precedente verrà attivato dalle comunicazioni tramite le API Message Stream. L'evento di messa in pausa dell'audio deve essere incluso nel record per riprendere la riproduzione, se applicabile. |
Gestisci la cronologia delle connessioni e implementa le API Message Stream. | Obbligatorio |
Stato della connessione | Per consentire ai Cercatori di effettuare il giudizio sul passaggio di connessione.Lo stato della connessione include:
|
Includi lo stato della connessione nello stream di annunci e messaggi BLE. | Obbligatorio |
Modifica delle funzionalità di runtime | L'audio switch può essere attivato eseguendo l'upgrade del firmware sul fornitore, pertanto le funzionalità devono essere sincronizzate tra cercatore e fornitore in fase di esecuzione. | Implementa le API Message Stream per accedere alle funzionalità di runtime. | Obbligatorio |
Regole di commutazione configurabili | Consenti a Seeker di configurare la priorità tra lo streaming audio attivo esistente e le nuove richieste di streaming audio tramite le impostazioni delle preferenze dell'utente. Ad esempio, il cercatore di comandi audio potrebbe fornire impostazioni dell'interfaccia utente per consentire agli utenti di attivare/disattivare il passaggio automatico tra lo streaming di contenuti multimediali e le chiamate. Il cercatore di cambio audio imposterà e riceverà la regola di trasferimento tramite lo stream di messaggi. |
Solo per i fornitori multipunto. Implementa le API Message Stream per rendere configurabili le regole di passaggio tra i dispositivi connessi. |
Facoltativo |
Passaggio da un dispositivo attivo all'altro | Consenti a Audio switch Seeker di simulare il passaggio dell'audio tra i dispositivi connessi. Lato Audio switch Seeker, potrebbe essere presente un'interfaccia utente che consenta agli utenti di passare facilmente da un dispositivo connesso all'altro. |
Solo per i fornitori multipunto. Implementa le API Message Stream per la ricerca di dispositivi con Cambio audio per determinare la sorgente audio attiva tra i dispositivi connessi. |
Obbligatorio |
Notifica di passaggio automatico tra punti di accesso | Lascia che la ricerca di cambio audio mostri la notifica di cambio. | Solo fornitori multipunto. Implementa le API Message Stream per notificare i Cercatori di cambio audio connessi quando si verifica un passaggio multipunto. |
Obbligatorio |
Payload pubblicitario
Il fornitore deve includere nell'annuncio il proprio stato di connessione corrente, basato sui dati dell'account di accoppiamento rapido descritti in Pubblicità: quando non è rilevabile.
Tieni presente che la versione della tabella 4.2 è 0x1.
Campo Stato connessione
Ottetto | Tipo di dati | Descrizione | Valore | Obbligatorio? |
---|---|---|---|---|
0 | uint8 |
Lunghezza e tipo di campo 0bLLLLTTTT
|
0bLLLL0101
|
Obbligatorio |
1 | uint8 |
Stato connessione 0bHAFRSSSS
|
0bHAFRSSSS
|
Obbligatorio |
2 | uint8 |
Dati personalizzati Al momento, contiene solo il tipo di contenuti utilizzato per descrivere l'utilizzo dello streaming audio corrente. Il cercatore la invierà al fornitore. |
Il valore viene inviato dal cercatore dello streaming attivo corrente al fornitore tramite lo stream di messaggi. 0 se lo streaming attivo corrente non proviene da Seeker. | Obbligatorio |
3 - var | Bitmap dei dispositivi connessi Una bitmap che mostra i dispositivi attualmente connessi al provider. Tutti i dispositivi accoppiati sono disposti in ordine, un bit per ogni dispositivo accoppiato. La durata dipende dal numero di dispositivi associati del fornitore. |
Il bit mappato impostato su 1 se il dispositivo è attualmente connesso al provider, su 0 in caso contrario. Per maggiori dettagli, consulta la sezione Bitmap dei dispositivi connessi |
Facoltativo |
Tabella 4.1: dati non elaborati del campo Stato connessione
Indicatori di connessione
0bH = rilevamento sulla testa
- 1, ora è attivo
- 0, altrimenti non è sulla testa o non è presente alcun sensore OHD
0bA = disponibilità della connessione
- 1, è disponibile una connessione
- 0, altrimenti
0bF = modalità Niente distrazioni
- 1. Ora, in modalità di concentrazione, il passaggio da una connessione all'altra non è consentito per l'utilizzo dei contenuti multimediali, ad esempio non è possibile passare da A2DP ad A2DP
- 0, altrimenti
0bR = ricollegamento automatico
- 1, se la connessione attuale viene ricollegata automaticamente dal fornitore, il che significa che non è collegata dagli utenti (per il multipoint, se una delle connessioni esistenti viene ricollegata automaticamente, deve essere impostato su 1)
- 0, altrimenti
Stato connessione
- 0x0: nessuna connessione
- 0x1: paging
- 0x2: connesso, ma nessun trasferimento di dati
- 0x3: trasferimento di dati non audio (solo se commutabile, in caso contrario viene utilizzato 0xF)
- 0x4: streaming A2DP, AVRCP non applicabile
- 0x5: streaming A2DP e riproduzione AVRCP
- 0x6: streaming HFP (chiamate su rete fissa/VoIP), inclusi suoni di chiamata in banda e non in banda
- 0x7: audio LE - streaming di contenuti multimediali senza controllo
- 0x8: LE audio - streaming di contenuti multimediali con controllo
- 0x9: LE audio - streaming di chiamate
- 0xA: LE audio - trasmissione
- 0xF: disattiva temporaneamente l'opzione di connessione (ad es. aggiornamento del firmware)
Tipo di contesto LE Audio e stato della connessione
Consigliamo al fornitore LE Audio di gestire tutti i tipi di contesto specificati in Assigned Numbers 6.12.3 (a meno che il fornitore non supporti esplicitamente un determinato tipo di contesto) e mappare il tipo di contesto allo stato di connessione come indicato di seguito.
- Conversazionale: 0x9
- Media: 0x8
- Gioco: 0x7
- Istruzioni: 0x7
- Assistenti vocali: 0x9
- Live: 0x9
- Effetti sonori: 0x2
- Notifiche: 0x2
- Suoneria: 0x9
- Avvisi: 0x7
- Allarme di emergenza: 0x9
Per lo scenario di tipo di contesto LE Audio misto, ad esempio la riproduzione di contenuti multimediali durante la chiamata, il fornitore deve utilizzare lo stato di connessione con la massima priorità, ovvero 0x9 (chiamata) per lo scenario precedente anziché 0x8 (contenuti multimediali).
Bitmap dei dispositivi connessi
Per evitare il passaggio a una connessione indesiderata, l'utente che cerca assistenza potrebbe dover sapere a quali dispositivi è attualmente connesso l'auricolare. Ad esempio, quando le cuffie sono collegate allo smartphone, l'utente non vuole essere interrotto dal cambio di connessione quando uno dei membri del gruppo Famiglia avvia YouTube sul tablet.
Tieni presente che questa bitmap è anonima e che l'utente che cerca non è in grado di sapere quali altri dispositivi sono accoppiati con il fornitore. Ad esempio, prendiamo 5 dispositivi accoppiati:
- 0: laptop (0bx0000000)
- 1: telefono A (0b0x000000)
- 2: telefono B (0b00x00000)
- 3: tablet (0b000x0000)
- 4: TV (0b0000x000)
Se i dispositivi connessi attuali sono un laptop e un tablet, il valore del bitmap sarà 0b10010000. La modifica dell'ordine è accettabile se è inevitabile, ad esempio quando gli utenti ripristinano i dati di fabbrica dell'auricolare o quando il numero di dispositivi accoppiati raggiunge il limite superiore.
Annuncio risolvibile casuale
Per evitare il monitoraggio e rispettare la privacy degli utenti, il fornitore deve ruotare e criptare il campo in base alla chiave dell'account utilizzando AES-CTR:
encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)
dove
La chiave è ricavata dalla chiave dell'account in uso, che è definita nella sezione successiva.
La chiave viene generata dalla funzione HKDF, IETF RFC 5869, utilizzando la funzione hash SHA-256.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
Il fornitore deve utilizzare qui la chiave dell'account originale, ovvero il primo byte della chiave è 0x04, non incluso nel pattern di utilizzo.
IV (vettore iniziale) è il sale di 2 byte dei dati della chiave dell'account con padding zero, ovvero IV è concat(sale, 14 byte ZERO).
I dati non elaborati dello stato della connessione sono definiti nella tabella 4.1. Se lo stato della connessione cambia, il sale e l'RPA devono essere rigenerati nello stesso periodo di tempo della pubblicità.
In questo modo, il campo dello stato della connessione criptata ruota contemporaneamente ai dati della chiave dell'account.
L'annuncio BLE sarà strutturato come segue:
Ottetto | Tipo di dati | Descrizione | Valore | Obbligatorio? |
---|---|---|---|---|
0 | uint8 |
Versione e flag | 0x10 | Obbligatorio |
1 - t | Dati della chiave dell'account | varia | Obbligatorio | |
t+1 - s | Dati batteria | varia | Facoltativo | |
s+1 - var | Dati risolvibili casuali | varia | Obbligatorio se l'elenco delle chiavi dell'account non è vuoto, in caso contrario Esclusa. |
Tabella 4.2: annunci BLE con dati risolvibili casuali
I dati risolvibili in modo casuale contengono:
Ottetto | Tipo di dati | Descrizione | Valore | Obbligatorio? |
---|---|---|---|---|
0 | uint8 |
Lunghezza e tipo di campo 0bLLLLTTTT
|
0bLLLL0110
|
Obbligatorio |
1 - var | Dati criptati | varia | Obbligatorio |
Tabella 4.2.1: dati risolvibili casuali
Ad esempio, se i dati risolvibili casuali contengono un campo dello stato della connessione criptato, il risultato decriptato sarà il campo dello stato della connessione.
Per evitare manomissioni, i dati della chiave dell'account riportati sopra devono essere leggermente modificati quando i dati risolvibili in modo casuale sono inclusi nell'annuncio. Normalmente, quando si crea il filtro della chiave dell'account, viene prodotto un valore V combinando il filtro della chiave dell'account con un valore di sicurezza. Tuttavia, quando vengono pubblicizzati anche i dati risolvibili in modo casuale, il valore V deve essere costruito come segue:
V = concat(account_key, salt, random_resolvable_data)
Se vengono pubblicizzati sia i dati della batteria sia i dati risolvibili in modo casuale, V deve essere costituito come segue:
V = concat(account_key, salt, battery_data, random_resolvable_data)
Chiave account in uso
Il passaggio da una connessione all'altra si basa sull'account, pertanto il fornitore deve includere i dati dell'account della connessione corrente nell'annuncio BLE. Se il dispositivo attualmente connesso è un cercatore di audio, il fornitore dovrebbe essere in grado di recuperare la chiave dell'account associata a questo cercatore e utilizzarla per criptare il campo dello stato della connessione. Se la sorgente audio collegata non è un cercatore di Audioswitch, il fornitore deve utilizzare la chiave dell'account utilizzata più di recente.
Prima di calcolare il filtro delle chiavi dell'account, il fornitore deve modificare il primo byte delle chiavi dell'account in modo da includere uno dei seguenti pattern di utilizzo:
- 0b00000100
Questa chiave dell'account non è in uso.
Si tratta della chiave predefinita (vedi Chiave account). - 0b00000101
Questa è la chiave dell'account utilizzata più di recente.
Il campo dello stato della connessione è criptato da questa chiave dell'account. Non sono presenti informazioni sulla chiave dell'account relative allo stato attuale della connessione. Ciò potrebbe significare che non sono collegati dispositivi o che il dispositivo connesso non è un cercatore di audio switch. - 0b00000110
Questa chiave account è la chiave account in uso.
Il campo dello stato della connessione è criptato da questa chiave dell'account e il dispositivo attualmente collegato è associato a questa chiave dell'account.
Schema del payload del cambio audio
La figura seguente mostra lo schema del payload Audio switch.

Messaggi
Quando sono connessi, il cercatore e il fornitore possono utilizzare lo stream di messaggi per sincronizzare la funzionalità di trasferimento audio, attivare un trasferimento di connessione, impostare e recuperare la preferenza di trasferimento, notificare lo stato della connessione e così via. Creiamo un gruppo di messaggi e codici di messaggio specifici per l'audio come indicato di seguito.
Nome gruppo di messaggi | Valore |
---|---|
Cambio audio | 0x07 |
Ulteriori dettagli per ciascun codice messaggio sono inclusi nelle sezioni seguenti.
Nome del codice messaggio | Valore | Solo multipunto | Mittente | Responder | Cripta | MAC | ACK |
---|---|---|---|---|---|---|---|
Ottenere la funzionalità Cambio Audio | 0x10 | No | Entrambi | Entrambi, tramite il codice 0x11 | No | N | No |
Notifica della funzionalità di cambio audio | 0x11 | No | Entrambi | Entrambi | No | S | Y |
Impostare lo stato multipunto | 0x12 | Y | Ricercatore | Provider | No | S | Y |
Impostare la preferenza di trasferimento | 0x20 | Y | Ricercatore | Provider | No | S | Y |
Impostare la preferenza di trasferimento | 0x21 | Y | Ricercatore | Fornitore, tramite il codice 0x22 | No | N | No |
Notificare la preferenza di trasferimento | 0x22 | Y | Provider | Ricercatore | No | N | No |
Cambiare l'origine audio attiva(sul dispositivo connesso) | 0x30 | Y | Ricercatore | Provider | No | S | Y |
Tornare indietro | 0x31 | No | Ricercatore | Provider | No | S | Y |
Notifica evento di interruttore multipunto | 0x32 | Y | Provider | Ricercatore | No | N | No |
Ottenere lo stato della connessione | 0x33 | Y | Ricercatore | Fornitore, tramite il codice 0x34 | No | N | No |
Notifica lo stato della connessione | 0x34 | Y | Provider | Ricercatore | Y | N | No |
Notifica di inizio connessione per il cambio audio | 0x40 | No | Ricercatore | Provider | No | S | Y |
Indicare la chiave dell'account in uso | 0x41 | No | Ricercatore | Provider | No | S | Y |
Inviare dati personalizzati | 0x42 | No | Ricercatore | Provider | No | S | Y |
Impostare la destinazione della connessione con interruzione | 0x43 | Y | Ricercatore | Provider | No | S | Y |
Tabella 4.3: messaggi di cambio audio
MAC dei messaggi di cambio audio
Per fornire l'autenticazione dei messaggi, tutti i messaggi di trasferimento audio con dati aggiuntivi inviati dal cercatore al fornitore richiedono un codice di autenticazione dei messaggi. Quando viene ricevuto un messaggio con MAC, deve essere acquisito in modo che il cercatore sappia se il fornitore ha reagito o meno al messaggio.
Se l'autenticazione del messaggio ha esito positivo, il fornitore deve inviare l'ACK per il messaggio:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Accettazione | 0xFF |
1 | uint8 | ACK | 0x01 |
2 - 3 | uint16 | Lunghezza dati aggiuntiva | varia |
4 | uint8 | Cambio audio | 0x07 |
5 | uint8 | Codice messaggio cambio audio | varia |
6 - s | Dati aggiuntivi | varia |
In caso di esito negativo, il fornitore deve inviare il NAK per il messaggio:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Accettazione | 0xFF |
1 | uint8 | NAK | 0x02 |
2 - 3 | uint16 | Lunghezza dati aggiuntiva | 0x0003 |
4 | uint8 | Motivo errore | varia |
5 | uint8 | Cambio audio | 0x07 |
6 | uint8 | Codice messaggio cambio audio | varia |
Tieni presente che, se il fornitore è il mittente, il MAC non è obbligatorio.
Ottenere la funzionalità Cambio audio
Sia il fornitore sia il cercatore di Audio Switch possono verificare se il cercatore/fornitore di accoppiamento rapido collegato supporta o meno Audio Switch utilizzando il messaggio riportato di seguito:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio audio | 0x07 |
1 | uint8 | Ottenere la funzionalità Cambio audio | 0x10 |
2 - 3 | uint16 | Lunghezza dati aggiuntiva | 0 |
Tabella 4.3.1.0: ottieni la funzionalità di Cambio Audio
Funzionalità di notifica del cambio audio
Al ricevimento del codice messaggio get capability of Audio switch, il cercatore/fornitore di Audio Switch risponderà con uno dei seguenti flag:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio audio | 0x07 |
1 | uint8 | Funzionalità di notifica del cambio audio | 0x11 |
2 - 3 | uint16 | Lunghezza dati aggiuntiva | 20 se inviata dal cercatore 4 se inviata dal fornitore |
4 - 5 | uint16 | Codice versione del cambio audio | Un valore diverso da zero indica che supporta l'opzione Audio switch. Il codice della versione corrente (con il miglioramento della sicurezza) è 0x0102. 0x0000 o nessuna risposta entro 1 secondo indica che il controllo audio non è supportato su questo dispositivo |
6 - 7 | bandiere | Flag delle funzionalità di trasferimento audio del fornitore Se questo valore viene inviato dal cercatore, questi due byte devono essere ignorati. |
varia Consulta Flag delle funzionalità di cambio audio |
8 - 15 | Nonce messaggio Obbligatorio solo se inviato da Seeker |
varia | |
16 - 23 | Codice di autenticazione del messaggio Obbligatorio solo se inviato da Seeker |
varia |
Tabella 4.3.1.1: funzionalità di notifica del cambio audio
Flag delle funzionalità di cambio audio
Bit 0 (ottavo 6, MSB): stato del cambio audio
- 1, se lo stato del cambio audio è attivo
- 0, altrimenti
Bit 1: configurabilità multipunto
- 1, se il dispositivo supporta il multipunto e può essere attivato e disattivato
- 0, altrimenti (non supporta il multipunto o il multipunto è sempre attivo)
Bit 2: stato attuale multipoint
- 1, se la connettività multipunto è attiva
- 0, altrimenti
Bit 3: rilevamento all'uso
- 1, se questo dispositivo supporta il rilevamento della testa (anche se al momento è disattivato)
- 0, altrimenti
Bit 4: stato attuale del rilevamento all'uso
- 1, se il rilevamento della testa è attivo
- 0, altrimenti (non supporta il rilevamento sulla testa o il rilevamento sulla testa è disabilitato)
Tutti gli altri bit sono riservati, valore predefinito 0.
Impostare lo stato multipunto
Per i cercapunti audio, potremmo fornire l'impostazione per attivare/disattivare la funzionalità multipoint. Il cercatore imposterà lo stato multipoint sul fornitore utilizzando il seguente messaggio:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio audio | 0x07 |
1 | uint8 | Impostare lo stato multipunto | 0x12 |
2 - 3 | uint16 | Lunghezza dati aggiuntiva | 17 |
4 | uint8 | Stato multipunto | 0: disattiva la connettività multipunto 1: attiva la connettività multipunto |
5 - 12 | Nonce messaggio | varia | |
13 - 20 | Codice di autenticazione dei messaggi | varia |
Tabella 4.3.1.2: imposta lo stato multipunto
Impostare la preferenza di passaggio
Gli utenti che cercano di cambiare l'audio possono modificare la preferenza di commutazione del multipoint e impostarla sul fornitore utilizzando il messaggio riportato di seguito:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio audio | 0x07 |
1 | uint8 | Impostare la preferenza di passaggio | 0x20 |
2 - 3 | uint16 | Lunghezza dati aggiuntiva | 18 |
4 | bandiere | Preferenza di commutazione | varia Vedi flag della preferenza di commutazione multipunto |
5 | Impostazioni di commutazione avanzate Questo byte è riservato, il valore predefinito è 0 |
varia | |
6 - 13 | Nonce messaggio | varia | |
14 - 21 | Codice di autenticazione dei messaggi | varia |
Tabella 4.3.2.0: imposta la preferenza di trasferimento
Flag della preferenza di commutazione multipunto
- Bit 0 (MSB): A2DP vs A2DP (valore predefinito 0)
- Bit 1: HFP vs HFP (predefinito 0)
- Bit 2: A2DP o HFP (predefinito 0)
- Bit 3: HFP vs A2DP (valore predefinito 1)
- Bit 4-7: riservati
- La figura sopra mostra la differenza tra "Nuova richiesta di profilo" e "Profilo attivo corrente".
- 0 per mancata attivazione
- 1 per il passaggio
Ottenere la preferenza di trasferimento
Gli utenti che cercano un commutatore audio possono eseguire query sulla preferenza di commutazione del multipoint dal fornitore utilizzando il messaggio riportato di seguito:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio audio | 0x07 |
1 | uint8 | Recuperare la configurazione del passaggio | 0x21 |
2 - 3 | uint16 | Lunghezza dati aggiuntiva | 0 |
Tabella 4.3.2.1: ottieni la preferenza di trasferimento
Preferenza di notifica del passaggio
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio audio | 0x07 |
1 | uint8 | Preferenza di notifica del passaggio | 0x22 |
2 - 3 | uint16 | Lunghezza dati aggiuntiva | 2 |
4 | bandiere | Modifica dei flag delle preferenze | varia Vedi flag della preferenza di commutazione multipunto |
5 | Impostazioni di commutazione avanzate Questo byte è riservato, il valore predefinito deve essere 0 |
varia |
Tabella 4.3.2.2: preferenza di notifica del passaggio
Cambiare la sorgente audio attiva (sul dispositivo connesso)
Gli utenti che cercano la funzionalità Cambio audio possono chiedere al fornitore multipunto di cambiare la fonte audio attiva tra i dispositivi connessi utilizzando il messaggio riportato di seguito:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio audio | 0x07 |
1 | uint8 | Cambiare la sorgente audio attiva (sul dispositivo connesso) | 0x30 |
2 - 3 | uint16 | Lunghezza dati aggiuntiva | 17 |
4 | bandiere | Cambio di indicatori di eventi relativi all'origine audio attiva | varies Vedi evento di cambio della sorgente audio attiva |
5 - 12 | Nonce messaggio | varia | |
13 - 20 | Codice di autenticazione dei messaggi | varia |
Tabella 4.3.3.0: cambia l'origine audio attiva (sul dispositivo connesso)
Evento di cambio della sorgente audio attiva
- Bit 0 (MSB): 1 passa a questo dispositivo, 0 passa al secondo dispositivo connesso
- Bit 1: 1 per riprendere la riproduzione dopo il passaggio a un altro dispositivo, 0 in caso contrario. La ripresa della riproduzione significa che il fornitore invia una notifica PLAY al cercatore tramite il profilo AVRCP. Se lo stato precedente (prima del passaggio) non era MEDIA_PLAY, il fornitore deve ignorare questo flag.
- Bit 2: 1 rifiuta SCO sul dispositivo disconnesso, 0 in caso contrario
- Bit 3: 1 per scollegare il Bluetooth sul dispositivo di allontanamento, 0 in caso contrario.
- Bit 4-7: riservati.
I Cercatori di dispositivi di commutazione audio potrebbero non conoscere sempre correttamente il loro stato, pertanto è possibile che il fornitore riceva un messaggio "Passa a questo dispositivo" quando il dispositivo attivo è già il cercatore. In questo caso, per mostrare l'interfaccia utente corretta su Seeker, il fornitore può inviare un NAK con il motivo dell'errore 0x4 - Azione dispositivo ridondante.
Per un fornitore LE Audio con più di un membro dell'insieme, il fornitore deve scollegare tutti i membri dal cercatore, altrimenti lo stack Bluetooth del cercatore si ricollegherà al fornitore.
Tornare al dispositivo disconnesso
Se il passaggio da una connessione all'altra non è voluto, gli utenti possono annullarlo e, in alcuni scenari, ha senso ripristinare la connessione audio per ridurre al minimo l'interruzione. Il cercatore utilizzerà il messaggio riportato di seguito per attivare il ritorno al canale precedente:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio audio | 0x07 |
1 | uint8 | Tornare al dispositivo disconnesso | 0x31 |
2 - 3 | uint16 | Lunghezza dati aggiuntiva | 17 |
4 | uint8 | Evento di ritorno | varia 0x01: torna indietro 0x02: torna indietro e riprendi la riproduzione |
5 - 12 | Nonce messaggio | varia | |
13 - 20 | Codice di autenticazione dei messaggi | varia |
Tabella 4.3.3.1: Torna al dispositivo disconnesso
Per i fornitori multipunto, per eseguire il passaggio da una connessione all'altra, un fornitore potrebbe disconnettere un dispositivo di sorgente audio e mettere in pausa la sessione audio sull'altra sorgente audio. Ad esempio, supponiamo che le cuffie multipunto siano connesse a un tablet e a un terzo dispositivo con cambio audio supportato. L'utente sta guardando un video sul tablet quando riceve una chiamata sul suo smartphone. Lo smartphone attiverà un interruttore di connessione sulle cuffie, che deve disconnettere il terzo dispositivo per connettersi allo smartphone, mettendo in pausa anche la sessione multimediale sul tablet per ricevere la suoneria dallo smartphone. Se l'utente rifiuta la chiamata, lo smartphone potrebbe chiedere all'auricolare di "tornare alla riproduzione e riprendere la riproduzione". Alla ricezione di questa richiesta, le cuffie devono ricollegarsi al terzo dispositivo e riprendere la riproduzione del video in pausa sul tablet.
Notifica evento di commutazione multipunto
Per informare gli utenti di un evento di interruttore multipunto in corso, lo Strumento di ricerca di interruttori audio potrebbe mostrare una notifica. Il fornitore deve informare i Cercatori di comandi audio collegati dell'evento di commutazione.
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio audio | 0x07 |
1 | uint8 | Il fornitore deve inviare l'evento di notifica di cambio multipunto su ogni cambio, tra cui cercatore con cambio audio a cercatore senza cambio audio, cercatore senza cambio audio a cercatore con cambio audio e cercatore con cambio audio a cercatore con cambio audio |
0x32 |
2 - 3 | uint16 | Lunghezza dati aggiuntiva | varia |
4 | uint8 | Motivo del passaggio Questo valore deve essere determinato in base allo stato della connessione. Per i casi d'uso LE Audio, può essere utile esaminare la mappatura tra il tipo di contesto LE Audio e lo stato della connessione. Ad esempio, lo stato di connessione corrispondente agli assistenti vocali è 0x9(LE audio - call streaming). Pertanto, il motivo del passaggio per un trasferimento avviato dagli assistenti vocali deve essere 0x02. |
varia 0x00: non specificato 0x01: contenuti multimediali (ad es. streaming A2DP, streaming multimediale LEA) 0x02: chiamata (ad es. streaming HFP, streaming di chiamate LEA) |
5 | uint8 | Dispositivo di destinazione | varia 0x01: questo dispositivo 0x02: un altro dispositivo connesso |
6 - n | utf8 | Nome del dispositivo di destinazione se il dispositivo di destinazione è il cercatore di audio, utilizza il nome a cui è stato inviato il cercatore, altrimenti utilizza il nome BT, se non applicabile, utilizza gli ultimi 2 byte del suo indirizzo |
varia |
Tabella 4.3.3.2: notifica evento interruttore multipunto
Ottenere lo stato della connessione
Il cercatore può ottenere lo stato attuale della connessione dal fornitore:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio audio | 0x07 |
1 | uint8 | Ottenere lo stato della connessione | 0x33 |
2 - 3 | uint16 | Lunghezza dati aggiuntiva | 0 |
Tabella 4.3.3.3: ottieni lo stato della connessione
Al ricevimento di questo messaggio, il fornitore deve rispondere con il codice messaggio 0x34, Invia stato connessione.
Notifica stato connessione
Come definito nel payload della pubblicità BLE, per i fornitori multipunto, se lo stato della connessione cambia, ad eccezione del pacchetto pubblicitario, il fornitore deve notificare la modifica anche ai cercatori collegati che utilizzano la stessa chiave dell'account. Se il fornitore è collegato con un cercatore di switch audio e un cercatore di switch non audio, se quest'ultimo è attivo, il fornitore deve notificare anche al cercatore di switch audio collegato lo stato della connessione (utilizzando la chiave dell'account del cercatore).
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio audio | 0x07 |
1 | uint8 | Notifica stato connessione | 0x34 |
2 - 3 | uint16 | Lunghezza dati aggiuntiva | varia |
4 | uint8 | Flag dispositivo attivo | varies 0x00: questo cercatore è passivo e il dispositivo attivo utilizza la stessa chiave dell'account 0x01: questo cercatore è il dispositivo attivo 0x02: questo cercatore è passivo e il dispositivo attivo è un cercatore di comandi audio. |
5 - n | Stato della connessione criptata | varia | |
n+1 - n+8 | Nonce messaggio | varia |
Tabella 4.3.3.4: notifica lo stato della connessione
Messaggio di stato della connessione criptata
encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)
dove:
La chiave è ricavata dalla chiave dell'account in uso. Consulta Annunci risolvibili casuali.
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, connected_devices) che è definito nel payload pubblicitario BLE Tieni presente che il byte per la lunghezza e il tipo di campo non deve essere incluso poiché abbiamo il codice messaggio e la lunghezza dei dati qui.
Notifica di inizio connessione con il cambio audio
I fornitori di servizi di cambio audio potrebbero dover sapere se il cambio di connessione viene attivato dall'audio per avere reazioni diverse, ad esempio disattivare gli annunci per gli eventi di cambio audio. Il cercatore invia un messaggio per informare il fornitore che questa connessione è stata avviata da un interruttore audio.
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio audio | 0x07 |
1 | uint8 | Notifica di inizio connessione con il cambio audio | 0x40 |
2 - 3 | uint16 | Lunghezza dati aggiuntiva | 17 |
4 | uint8 | Indicazione della connessione avviata dal cambio audio | varia 0: questa connessione non è stata attivata dal cambio audio 1: questa è stata una connessione avviata dal cambio audio |
5 - 12 | Nonce messaggio | varia | |
13 - 20 | Codice di autenticazione dei messaggi | varia |
Tabella 4.3.4.0: notifica della connessione avviata dal cambio audio
Indica la chiave dell'account in uso
Se al cercatore (ad es. multiutente) sono associate più chiavi account al fornitore, il cercatore utilizzerà il messaggio riportato di seguito per indicare quale chiave account è in uso.
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio audio | 0x07 |
1 | uint8 | Indica la chiave dell'account in uso | 0x41 |
2 - 3 | uint16 | Lunghezza dati aggiuntiva | 22 |
4 - 9 | utf8 | Stringa in uso | UTF8 ("in uso") |
10 - 17 | Nonce messaggio | varia | |
18 - 25 | Codice di autenticazione dei messaggi | varia |
Tabella 4.3.4.1: chiave account in uso
Una volta ricevuto questo messaggio, il fornitore può sapere quale chiave dell'account è in uso verificando il codice di autenticazione del messaggio.
Inviare dati personalizzati
Il cercatore di switch audio attivo può incapsulare le informazioni (ad es. l'utilizzo dell'audio) dello stream audio in un byte di dati personalizzati e inviarlo al fornitore utilizzando il messaggio riportato di seguito:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio audio | 0x07 |
1 | uint8 | Inviare dati personalizzati | 0x42 |
2 - 3 | uint16 | Lunghezza dati aggiuntiva | 17 |
4 | uint8 | Dati personalizzati | varia |
5 - 12 | Nonce messaggio | varia | |
13 - 20 | Codice di autenticazione dei messaggi | varia |
Tabella 4.3.4.2: inviare dati personalizzati
Una volta ricevuti i dati personalizzati, il fornitore aggiornerà il pacchetto pubblicitario in modo da includerli. Per un fornitore multipunto, deve anche notificare la variazione dello stato della connessione a un altro cercatore collegato che utilizza la stessa chiave dell'account.
Impostare la destinazione della connessione in caso di interruzione
Sugli auricolari multipunto, se la connessione preferita da disconnettere non è quella meno utilizzata di recente, gli utenti che cercano di utilizzare il cambio audio possono indicare al fornitore il dispositivo da disconnettere utilizzando il seguente messaggio:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio audio | 0x07 |
1 | uint8 | Impostare la destinazione della connessione in caso di interruzione | 0x43 |
2 - 3 | uint16 | Lunghezza dati aggiuntiva | 17 |
4 | uint8 | Dispositivo connesso di destinazione da eliminare | varia 1: questo dispositivo |
5 - 12 | Nonce messaggio | varia | |
13 - 20 | Codice di autenticazione dei messaggi | varia |
Tabella 4.3.4.3: imposta la destinazione della connessione di abbandono