Cambio audio
Dato che gli utenti usano sempre più dispositivi di origine audio per eseguire le loro attività quotidiane, c'è una crescente richiesta di una soluzione più semplice per gestire i visori da usare su più dispositivi. La funzionalità Cambio Audio consente una transizione perfetta dei collegamenti delle cuffie tra i dispositivi in base all'attività utente (ad es. iniziare un film) e in base alla priorità eventi (ad es. una chiamata in arrivo).
Principi relativi all'esperienza utente
- Il cambio di connessione deve essere veloce e basato sull'azione dell'utente.
- Il cambio di connessione deve essere trasparente per gli utenti e consentire loro di controllo/ripristino se il passaggio non è desiderato.
- Il passaggio deve rispettare la privacy dell'utente.
Ruoli
Audio Switch Seeker: The Seeker è un dispositivo di origine audio (ad esempio, una telefono o tablet), alla ricerca di cuffie nelle vicinanze da collegare, se possibile.
Fornitore cambio audio. Il fornitore è in genere un paio di cuffie che pubblicizzano la propria presenza e stato della connessione per consentire ai ricercatori di prendere decisioni in merito al passaggio da un dispositivo all'altro.
Panoramica dei requisiti
Per poter effettuare il 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 ricercatore quando è già presente una connessione. Per i provider single-point:
|
Per migliorare le prestazioni è necessaria la modalità di scansione delle pagine a bassa latenza (l'intervallo di scansione non deve essere superiore a 640 ms). Per trovare un compromesso tra la durata della batteria e le prestazioni di cambio, il provider può disporre nella maggior parte dei casi di una modalità di scansione delle pagine predefinita (modalità a basso consumo, l'intervallo di scansione non deve essere superiore a 1280 ms). Tuttavia, la modalità a bassa latenza deve essere utilizzata nelle seguenti situazioni:
|
Obbligatorio |
Cronologia connessioni | Per tornare alla connessione precedente e, se applicabile, riprendere la riproduzione. Il ripristino verrà attivato dalle comunicazioni tramite le API Message Stream. L'evento audio in pausa 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 ricercatori di valutare il cambio di connessione.Lo stato della connessione include:
|
Includi lo stato della connessione in BLE Pubblicità e Message Stream. | Obbligatorio |
Modifica delle funzionalità di runtime | Il Cambio Audio può essere abilitato eseguendo l'upgrade del firmware sul provider, quindi le funzionalità devono essere sincronizzate tra il dispositivo di ricerca e il fornitore in fase di runtime. | Implementare le API Message Stream per accedere alle funzionalità di runtime. | Obbligatorio |
Regole di passaggio configurabili | Consenti al ricercatore 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 dispositivo di selezione dell'audio può fornire impostazioni dell'interfaccia utente per consentire agli utenti di attivare/disattivare il passaggio automatico tra streaming di contenuti multimediali e chiamate. La funzionalità di ricerca per il cambio audio verrà impostata e riceverà la regola di passaggio tramite Message Stream. |
Solo provider multipunto. Implementa le API Message Stream per rendere configurabili le regole di passaggio tra i dispositivi connessi. |
Facoltativo |
Cambio di dispositivo attivo | Consenti a Cambio Audio di simulare il passaggio da un dispositivo all'altro. In corrispondenza di Cambio Audio, gli utenti possono avere una UI che consente di passare facilmente da un dispositivo connesso all'altro. |
Solo provider multipunto. Implementa le API Message Stream per Audio switch Seeker per determinare la sorgente audio attiva tra i dispositivi connessi. |
Obbligatorio |
Notifica passaggio multipunto | Lascia che la funzionalità di ricerca del cambio audio mostri la notifica relativa al passaggio. | Solo fornitori multipunto. Implementa le API Message Stream per notificare chi cerca il cambio audio connesso quando è in corso un cambio multipunto. |
Obbligatorio |
Payload pubblicitario
Il Fornitore dovrà includere il suo stato di connessione corrente nella pubblicità, basato sui dati dell'account con 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 Attualmente, contiene solo il tipo di contenuti utilizzato per descrivere l'utilizzo dello streaming audio corrente. Il Ricercatore la invierà al Provider. |
Il valore viene inviato dal ricercatore dello streaming attualmente attivo al provider tramite il flusso di messaggi. 0 se il flusso di dati attualmente attivo non proviene dal dispositivo di ricerca. | Obbligatorio |
3 - var | Bitmap dei dispositivi connessi Una bitmap che mostra quali dispositivi sono attualmente connessi al provider. Tutti i dispositivi collegati sono disposti in ordine, un bit per un dispositivo collegato. La lunghezza dipenderà da quanti dispositivi collegati al provider sono presenti. |
Il bit mappato è impostato su 1 se il dispositivo è attualmente connesso al provider, altrimenti su 0. Consulta la sezione Bitmap dispositivo connesso per informazioni dettagliate. |
Facoltativo |
Tabella 4.1: Dati non elaborati del campo Stato della connessione
Flag di connessione
0bH = su rilevamento della testa
- 1, ora in testa
- 0, altrimenti non sulla testa o nessun sensore OHD
0bA = disponibilità della connessione
- 1, è disponibile una connessione
- 0, altrimenti
0bF = modalità focus
- 1, ora in modalità con stato attivo, il cambio di connessione non è consentito per i contenuti multimediali Ad esempio, non è possibile passare da A2DP ad A2DP
- 0, altrimenti
0bR = riconnessione automatica
- 1. Se la connessione corrente viene ricollegata automaticamente dal provider, il che significa non è connesso dagli utenti (per il multipunto, se una delle di connessione è stato riconnesso automaticamente, deve essere impostato su 1)
- 0, altrimenti
Stato connessione
- 0x0: nessuna connessione
- 0x1: paging
- 0x2: connessione attiva, ma nessun trasferimento di dati
- 0x3: trasferimento di dati non audio (solo quando è possibile cambiarlo, in caso contrario si usa 0xF)
- 0x4: streaming A2DP, AVRCP non applicabile
- 0x5: streaming A2DP e riproduzione AVRCP
- 0 x 6: streaming HFP (telefono/chiamata vocale), inclusa suoneria in banda e non in banda
- 0x7: LE audio - streaming multimediale senza controllo
- 0x8: LE audio - streaming multimediale con controllo
- 0x9: LE audio - streaming delle chiamate
- 0xA: LE audio - trasmissione
- 0xF: disattiva temporaneamente l'interruttore di connessione (ad es. aggiornamento firmware)
Tipo di contesto LE audio e stato della connessione
Consiglia che il provider audio LE debba gestire tutti i tipi di contesto specificati in Numeri assegnati 6.12.3 (a meno che il provider non supporti esplicitamente un determinato tipo di contesto) e il tipo di contesto allo stato di connessione come descritto di seguito.
- Conversazione: 0 x 9
- Media: 0x8
- Gioco: 0x7
- Istruzioni: 0 x 7
- Assistenti vocali: 0x9
- In diretta: 0 x 9
- Effetti sonori: 0 x 2
- Notifiche: 0 x 2
- Suoneria: 0 x 9
- Avvisi: 0 x 7
- Allarme d'emergenza: 0x9
Per il tipo di contesto LE audio misto, come la riproduzione di contenuti multimediali durante il Fornitore utilizzerà lo stato di connessione con la massima priorità, ovvero 0 x 9 (chiamata) per lo scenario precedente anziché 0 x 8 (contenuti multimediali).
Bitmap dispositivo connesso
Per evitare cambi di connessione indesiderati, il ricercatore potrebbe dover sapere dispositivi a cui sono attualmente connesse le cuffie. Ad esempio, quando le cuffie è connesso allo smartphone, l'utente non vuole essere interrotto dalla il cambio di connessione quando uno dei membri del gruppo Famiglia avvia YouTube il tablet.
Tieni presente che questa bitmap è anonima, il ricercatore non è in grado di sapere quali altre i dispositivi siano collegati al Fornitore. Ad esempio, prendiamo in considerazione 5 dispositivi collegati:
- 0: laptop (0bx0000000)
- 1: telefonoA (0b0x000000)
- 2: telefonoB (0b00x00000)
- 3: tablet (0b000x0000)
- 4: TV (0b0000x000)
Se i dispositivi attualmente collegati sono un laptop e un tablet, il valore bitmap sarà 0b10010000. La modifica dell'ordine è accettabile se è inevitabile ad es. quando gli utenti ripristinano i dati di fabbrica delle cuffie o quando il numero di dispositivi collegati raggiunge il limite massimo.
Pubblicità casuale risolvibile
Per evitare il tracciamento e rispettare la privacy dell'utente, il Fornitore deve ruotare e cripta il campo con la chiave dell'account utilizzando AES-CTR:
encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)
dove
La chiave viene ricavata dalla chiave dell'account in uso, che è definita nella sezione successiva.
La chiave viene generata dalla funzione HKDF, IETF RFC 5869, utilizzando l'algoritmo SHA-256 funzione hash.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
Il provider utilizzerà la chiave dell'account originale, ovvero il primo byte della chiave è 0x04, non incluso nel pattern di utilizzo.
IV (vettore iniziale) è il sale a 2 byte dei dati chiave dell'account con zero spaziatura interna, ad esempio IV è concat(salt, zeri a 14 byte).
I dati non elaborati relativi allo stato della connessione sono definiti nella tabella 4.1, se cambia lo stato della connessione, sale e RPA devono essere rigenerati lo stesso periodo di tempo per la pubblicità.
In questo modo il campo dello stato della connessione criptata ruota contemporaneamente I dati delle chiavi dell'account ruotano.
La pubblicità BLE sarà strutturata come segue:
Ottetto | Tipo di dati | Descrizione | Valore | Obbligatorio? |
---|---|---|---|---|
0 | uint8 |
Versione e flag | 0x10 | Obbligatorio |
1-T | Dati chiave dell'account | varia | Obbligatorio | |
t+1 - s | Dati batteria | varia | Facoltativo | |
s+1 - var | Dati casuali risolvibili | varia | Obbligatorio se l'elenco delle chiavi dell'account non è vuoto, altrimenti è escluso. |
Tabella 4.2: pubblicità BLE con dati risolvibili casuali
I dati casuali risolvibili 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 casuali risolvibili
Ad esempio, se i dati risolvibili casuali contengono una connessione criptata campo di stato, il risultato decriptato sarà di stato della connessione.
Per evitare manomissioni, i dati chiave dell'account sopra riportati devono essere leggermente modificati. quando i dati risolvibili casualmente sono inclusi nella pubblicità. Generalmente, quando creando il filtro della chiave dell'account, viene generato un valore V combinando il filtro con un sale. Al contrario, quando anche i dati risolvibili pubblicizzato, il valore V dovrebbe essere costruito come:
V = concat(account_key, salt, random_resolvable_data)
Se vengono pubblicizzati sia i dati sulla batteria sia i dati risolvibili casuali, V deve essere costruito come:
V = concat(account_key, salt, battery_data, random_resolvable_data)
Chiave account in uso
Il cambio di connessione è basato sull'account, quindi il provider dovrebbe includere i dati dell'account della connessione corrente nella pubblicità BLE. Se il dispositivo attualmente collegato è un Dispositivo di ricerca Cambio Audio, il provider dovrebbe essere in grado per ottenere la chiave dell'account associata al dispositivo di ricerca e utilizzarla per crittografare il campo dello stato della connessione. Se la sorgente audio collegata non è un audio switch Seeker, il provider deve usare la chiave dell'account utilizzata più di recente.
Prima di calcolare il filtro della chiave dell'account, il provider deve modificare il primo byte delle chiavi dell'account per includere uno dei seguenti pattern in uso:
- 0b00000100
Questa chiave dell'account non è in uso.
Si tratta di quella predefinita (vedi Chiave account). - 0b00000101
Questa chiave dell'account è quella utilizzata più di recente.
Il campo dello stato della connessione è criptato da questa chiave dell'account. Non esiste chiave dell'account per lo stato di connessione corrente, è possibile che dispositivi connessi o il dispositivo connesso non è un Dispositivo di ricerca Cambio Audio. - 0b00000110
Questa chiave dell'account è la chiave dell'account in uso.
Il campo dello stato della connessione è criptato da questa chiave dell'account e il valore dispositivo connesso è associato a questa chiave account.
Schema per il payload Cambio audio
La figura seguente mostra lo schema per il payload Cambio audio.
Messaggi
Una volta connessi, il ricercatore e il fornitore possono utilizzare lo stream di messaggi per sincronizzare l'audio switch, attivare un cambio di connessione, impostare e ricevere la preferenza, la notifica dello stato della connessione e così via. Creiamo un gruppo di messaggi i codici messaggio specifici per Cambio Audio, come indicato di seguito.
Nome del gruppo di messaggi | Valore |
---|---|
Cambio Audio | 0x07 |
Nelle sezioni seguenti sono inclusi ulteriori dettagli per ogni codice messaggio.
Nome codice messaggio | Valore | Solo multipunto | Mittente | Intervistato | Cripta | MAC | ACK |
---|---|---|---|---|---|---|---|
Ottieni la funzionalità Cambio Audio | 0x10 | N | Entrambi | Entrambi, tramite il codice 0x11 | N | N | N |
Funzionalità di notifica di Cambio Audio | 0x11 | N | Entrambi | Entrambi | N | S | Y |
Imposta stato multipunto | 0x12 | Y | Cercatore | Provider | N | S | Y |
Impostare la preferenza di passaggio | 0x20 | Y | Cercatore | Provider | N | S | Y |
Ottieni la preferenza di passaggio | 0x21 | Y | Cercatore | Provider, tramite codice 0x22 | N | N | N |
Notifica preferenza di cambio | 0x22 | Y | Provider | Cercatore | N | N | N |
Cambia sorgente audio attiva(al dispositivo connesso) | 0x30 | Y | Cercatore | Provider | N | S | Y |
Torna indietro | 0x31 | N | Cercatore | Provider | N | S | Y |
Notifica evento di switch multipunto | 0x32 | Y | Provider | Cercatore | N | N | N |
Conoscere lo stato della connessione | 0x33 | Y | Cercatore | Provider, tramite codice 0x34 | N | N | N |
Notifica stato della connessione | 0x34 | Y | Provider | Cercatore | Y | N | N |
Notifica connessione avviata per Cambio Audio | 0x40 | N | Cercatore | Provider | N | S | Y |
Indica la chiave dell'account in uso | 0x41 | N | Cercatore | Provider | N | S | Y |
Inviare dati personalizzati | 0x42 | N | Cercatore | Provider | N | S | Y |
Imposta il target della connessione per il ritiro | 0x43 | Y | Cercatore | Provider | N | S | Y |
Tabella 4.3: Messaggi relativi al cambio audio
MAC dei messaggi relativi al cambio audio
Per fornire l'autenticazione, tutti i messaggi Cambio Audio con per i dati inviati dal ricercatore al provider è necessario un codice di autenticazione del messaggio. Quando un messaggio con MAC viene ricevuto, deve essere confermato in modo che il ricercatore sa se il provider ha reagito o meno al messaggio.
Se l’autenticazione del messaggio ha esito positivo, il provider invierà il messaggio ACK per messaggio:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Accettazione | 0xFF |
1 | uint8 | ACK | 0x01 |
2 - 3 | uint16 | Dati aggiuntivi | varia |
4 | uint8 | Cambio Audio | 0x07 |
5 | uint8 | Codice messaggio relativo al cambio audio | varia |
6 - sec | Dati aggiuntivi | varia |
Se non riesce, il Provider invierà il codice NAK per il messaggio:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Accettazione | 0xFF |
1 | uint8 | NAK | 0x02 |
2 - 3 | uint16 | Dati aggiuntivi | 0x0003 |
4 | uint8 | Motivo errore | varia |
5 | uint8 | Cambio Audio | 0x07 |
6 | uint8 | Codice messaggio relativo al cambio audio | varia |
Tieni presente che, se il provider è il mittente, l'indirizzo MAC non è richiesto.
Ottieni la funzionalità Cambio Audio
Sia il provider Cambio Audio che il dispositivo di ricerca possono verificare se l'accoppiamento rapido connesso Il ricercatore/provider supporta o meno Cambio Audio utilizzando il messaggio seguente:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio Audio | 0x07 |
1 | uint8 | Ottieni la funzionalità Cambio Audio | 0x10 |
2 - 3 | uint16 | Dati aggiuntivi | 0 |
Tabella 4.3.1.0: Acquisizione della funzionalità Cambio Audio
Funzionalità di notifica per Cambio Audio
Dopo aver ricevuto il messaggio Ricevi la funzionalità Cambio Audio , la funzionalità di ricerca/provider di opzione Audio risponderà con uno dei seguenti elementi: :
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio Audio | 0x07 |
1 | uint8 | Funzionalità di notifica per Cambio Audio | 0x11 |
2 - 3 | uint16 | Dati aggiuntivi | 20 se viene inviato dal cercatore 4 se viene inviato dal provider |
4 - 5 | uint16 | Codice versione per Cambio Audio | Un valore diverso da zero indica che supporta Cambio Audio. Il codice della versione corrente (con il miglioramento della sicurezza) è 0x0102. 0x0000 o nessuna risposta entro 1 secondo significa che Cambio Audio non è supportato su questo dispositivo |
Istruzione primaria e secondaria | bandiere | Flag per la funzionalità Cambio Audio del provider Se questo viene inviato dal Seeker, questi due byte devono essere ignorati. |
varia Consulta Flag per funzionalità di cambio audio |
8 - 15 | Nonce messaggio Obbligatorio solo se inviato dal ricercatore |
varia | |
16 - 23 | Codice di autenticazione del messaggio Obbligatorio solo quando l'email viene inviata dal ricercatore |
varia |
Tabella 4.3.1.1: Funzionalità di notifica del cambio audio
Flag per funzionalità Cambio Audio
Bit 0 (ottetto 6, MSB): stato commutazione audio
- 1, se lo stato Cambio Audio è attivo
- 0, altrimenti
Bit 1: configurabilità multipunto
- 1, se il dispositivo supporta la connettività multipunto e può essere attivato/disattivato non attivo
- 0, altrimenti (non supporta la multipunto o la multipunto è sempre attiva)
Bit 2: stato corrente multipunto
- 1, se la connettività multipunto è attivata
- 0, altrimenti
Bit 3: rilevamento in linea
- 1, se il dispositivo supporta il rilevamento "on-head" (anche se questo è disattivato ora)
- 0, altrimenti
Bit 4: stato attuale di rilevamento in testa
- 1, se il rilevamento "on-head" è attivo
- 0, altrimenti (non supporta il rilevamento on-head o il rilevamento on-head è disattivata)
Tutti gli altri bit sono riservati; il valore predefinito è 0.
Imposta stato multipunto
Per gli utenti che hanno selezionato il cambio audio, potremmo fornire agli utenti l'impostazione per l'attivazione e la disattivazione. una funzionalità multipunto. Il ricercatore imposterà lo stato multipunto Provider che utilizza il messaggio seguente:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio Audio | 0x07 |
1 | uint8 | Imposta stato multipunto | 0x12 |
2 - 3 | uint16 | Dati aggiuntivi | 17 |
4 | uint8 | Stato multipunto | 0: disattiva il multipunto 1: attiva il multipunto |
5 - 12 | Nonce messaggio | varia | |
13 - 20 | Codice di autenticazione del messaggio | varia |
Tabella 4.3.1.2: Impostazione dello stato multipunto
Imposta preferenza di passaggio
Chi cerca il cambio audio può modificare la preferenza di commutazione tra multipunto e impostazione al provider utilizzando il messaggio seguente:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio Audio | 0x07 |
1 | uint8 | Imposta preferenza di passaggio | 0x20 |
2 - 3 | uint16 | Dati aggiuntivi | 18 |
4 | bandiere | Preferenza di passaggio | varia Consulta il flag di preferenza passaggio multipunto |
5 | Impostazioni di cambio avanzate Questo byte è riservato, il valore predefinito è 0 |
varia | |
Istruzione primaria e secondaria | Nonce messaggio | varia | |
14 - 21 | Codice di autenticazione del messaggio | varia |
Tabella 4.3.2.0: Impostare la preferenza di passaggio
Flag preferenza passaggio multipunto
- Bit 0 (MSB): A2DP vs A2DP (valore predefinito 0)
- Bit 1: HFP e HFP (predefinito 0)
- Bit 2: A2DP vs HFP (valore predefinito 0)
- Bit 3: HFP e A2DP (predefinito 1)
- Bit 4 - 7: riservato
- Sopra rappresenta come "nuova richiesta di profilo" rispetto a "profilo attivo attuale"
- 0 per mancato passaggio
- 1 per il passaggio
Visualizza preferenza di passaggio
Chi cerca il cambio audio può interrogare la preferenza di commutazione del multipunto dal Provider che utilizza il messaggio seguente:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio Audio | 0x07 |
1 | uint8 | Ottieni passaggio da una configurazione all'altra | 0x21 |
2 - 3 | uint16 | Dati aggiuntivi | 0 |
Tabella 4.3.2.1: Come ottenere le preferenze di passaggio
Notifica preferenza di cambio
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio Audio | 0x07 |
1 | uint8 | Notifica preferenza di cambio | 0x22 |
2 - 3 | uint16 | Dati aggiuntivi | 2 |
4 | bandiere | Flag di preferenza per il passaggio | varia Consulta il flag di preferenza passaggio multipunto |
5 | Impostazioni di selezione avanzate Questo byte è riservato, il valore predefinito deve essere 0 |
varia |
Tabella 4.3.2.2: Notifica delle preferenze di cambio
Cambia sorgente audio attiva (al dispositivo connesso)
Chi cerca il cambio audio può richiedere al provider multipunto di cambiare lo stato attivo sorgente audio tra i dispositivi connessi utilizzando il seguente messaggio:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio Audio | 0x07 |
1 | uint8 | Cambia sorgente audio attiva (al dispositivo connesso) | 0x30 |
2 - 3 | uint16 | Dati aggiuntivi | 17 |
4 | bandiere | Cambio dei flag di eventi della sorgente audio attiva | varia Consulta l'articolo relativo alla cambio di una sorgente audio attiva. |
5 - 12 | Nonce messaggio | varia | |
13 - 20 | Codice di autenticazione del messaggio | varia |
Tabella 4.3.3.0: Cambiare la sorgente audio attiva (al dispositivo connesso)
Cambio dell'evento di sorgente audio attiva in corso...
- Bit 0 (MSB): 1 commuta su questo dispositivo, 0 passa al secondo dispositivo connesso
- Bit 1: 1 riprendi la riproduzione sullo switch verso il dispositivo dopo il cambio, 0 altrimenti. Se si riprende la riproduzione, il Fornitore invia una notifica PLAY al Cercatore. tramite il profilo AVRCP. Se lo stato precedente (prima del passaggio alla vecchia versione) non era PLAY, il provider dovrebbe ignorare questo flag.
- Bit 2: 1 rifiuto SCO sul dispositivo disinserito, 0 altrimenti
- Bit 3: 1 disconnessione Bluetooth sul dispositivo interruttore di distanza, 0 altrimenti.
- Bit 4 - 7: riservato.
Chi cerca il cambio audio potrebbe non conoscere sempre correttamente il proprio stato, quindi è possibile affinché il Fornitore riceva uno "switch to this device" quando il ricercatore è già il dispositivo attivo. In questo caso, per mostrare la UI corretta su Seeker, la finestra Il provider può inviare un NAK con il motivo dell'errore, 0x4 - Azione dispositivo ridondante.
Per un Fornitore audio LE con più di un membro definito, il Fornitore deve disconnettere tutti i membri da Seeker, altrimenti lo stack Bluetooth Il ricercatore si riconnette al provider.
Tornare indietro (a dispositivo disconnesso)
Se il cambio di connessione è indesiderato, gli utenti possono ripristinare il passaggio e in alcuni casi, ha senso ripristinare la connessione audio per ridurre al minimo e un'interruzione del servizio. Il ricercatore utilizzerà il messaggio riportato di seguito per attivare il passaggio alla versione precedente:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio Audio | 0x07 |
1 | uint8 | Tornare indietro (a dispositivo disconnesso) | 0x31 |
2 - 3 | uint16 | Dati aggiuntivi | 17 |
4 | uint8 | Torna indietro evento | varies 0x01: torna indietro 0x02: torna indietro e riprendi la riproduzione |
5 - 12 | Nonce messaggio | varia | |
13 - 20 | Codice di autenticazione del messaggio | varia |
Tabella 4.3.3.1: Tornare indietro (a dispositivo disconnesso)
Nel caso dei provider multipunto, per effettuare un cambio di connessione, un provider può ignorare connessione con un dispositivo di origine audio e mettere in pausa la sessione audio sull'altro sorgente audio. Ad esempio, supponiamo che le cuffie multipunto siano connesse tablet e un terzo dispositivo Cambio Audio supportato. L'utente sta guardando il video su sul tablet quando c'è una chiamata in arrivo sullo smartphone. Lo smartphone attiverà un interruttore di connessione sulle cuffie, che deve interrompere la connessione per potersi connettere al telefono, mettendo in pausa anche i contenuti multimediali sessione sul tablet per ricevere la suoneria dallo smartphone. Se l'utente rifiuta al momento della chiamata, lo smartphone potrebbe chiedere alle cuffie di "tornare indietro e riprendere la riproduzione". Dopo aver ricevuto questa richiesta, le cuffie devono riconnettersi al terzo dispositivo e riprendi la riproduzione del video in pausa sul tablet.
Notifica evento multi-point-switch
Per informare gli utenti che si sta verificando un evento di switch multipunto, seleziona Cambio Audio La ricerca potrebbe mostrare una notifica agli utenti. Il provider dovrebbe notificare connesso Utenti che hanno cercato il cambio audio in merito all'evento di passaggio.
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio Audio | 0x07 |
1 | uint8 | Notifica evento di switch multipunto Il provider deve inviarlo a ogni switch, incluso il dispositivo di ricerca Cambio Audio a dispositivo di ricerca Cambio Audio, Dispositivo di ricerca cambio Cambio Audio e Dispositivo di ricerca Cambio di Audio e Dispositivo di ricerca Cambio di Audio. |
0x32 |
2 - 3 | uint16 | Dati aggiuntivi | varia |
4 | uint8 | Motivo del passaggio Questo valore deve essere determinato in base allo stato della connessione. Per i casi d'uso di LE audio, può essere utile esaminare la mappatura tra il tipo di contesto LE audio e lo stato della connessione. Ad esempio, lo stato della connessione corrispondente agli assistenti vocali è 0x9(LE audio - streaming delle chiamate). Di conseguenza, il motivo del passaggio per un passaggio avviato dagli assistenti vocali deve essere 0 x 02. |
varia 0x00: Non specificato 0x01: Contenuti multimediali (ad es. streaming A2DP, streaming di contenuti multimediali LEA) 0x02: Chiamata (ad es. streaming HFP, streaming di chiamate LEA) |
5 | uint8 | Dispositivo di destinazione | varies 0x01: questo dispositivo 0x02: un altro dispositivo connesso |
6 - n | utf8 | Nome del dispositivo di destinazione se il dispositivo di destinazione è Cambio Audio, utilizzando il nome inviato dal ricercatore oppure il nome del BT, se non applicabile, utilizzando gli ultimi 2 byte del suo indirizzo |
varia |
Tabella 4.3.3.2: Notifica di un evento multipoint-switch
Recuperare lo stato della connessione
Il ricercatore può ottenere lo stato di connessione corrente dal provider:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio Audio | 0x07 |
1 | uint8 | Recuperare lo stato della connessione | 0x33 |
2 - 3 | uint16 | Dati aggiuntivi | 0 |
Tabella 4.3.3.3: Recupero dello stato di connessione
Alla ricezione di questo messaggio, il Fornitore risponderà con il codice messaggio 0 x 34, notifica lo stato della connessione.
Invia notifica stato connessione
Come definito nel payload pubblicitario BLE, per provider multipunto, se lo stato della connessione cambia, tranne la modifica pacchetto pubblicitario, il provider deve anche avvisare i ricercatori connessi che usano la stessa chiave account in merito alla modifica. Se il provider è connesso con un Ricerca Cambio Audio e un Cercatore Cambio Audio, se l'opzione switch Seeker è attivo, il provider deve anche informare l'emittente switch Seeker sullo stato della connessione (utilizzando la chiave dell'account del dispositivo di ricerca).
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio Audio | 0x07 |
1 | uint8 | Invia notifica stato connessione | 0x34 |
2 - 3 | uint16 | Dati aggiuntivi | varia |
4 | uint8 | flag dispositivo attivo | varia 0x00: questo dispositivo di ricerca è passivo e il dispositivo attivo utilizza la stessa chiave account 0x01: questo ricercatore è il dispositivo attivo 0x02: questo dispositivo di ricerca è passivo, mentre il dispositivo attivo non è un dispositivo di ricerca Cambio Audio. |
5 - n | Stato della connessione criptata | varia | |
n+1 - n+8 | Nonce messaggio | varia |
Tabella 4.3.3.4: Notifica dello stato di connessione
Messaggio di stato della connessione criptata
encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)
dove:
La chiave deriva dalla chiave dell'account in uso. Consulta Pubblicità casuale risolvibile.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
IV è concat(Session_nonce, Message_nonce)
connection_status_raw_data = concat(stato_connessione, dati_personalizzati, dispositivi_connessi), che è definito in BLE payload per la pubblicità Tieni presente che il byte per la lunghezza e il tipo di campo non deve essere incluso poiché qui abbiamo il codice del messaggio e la lunghezza dei dati.
Notifica connessione avviata per Cambio Audio
I fornitori di Cambio Audio potrebbero dover sapere se il cambio di connessione è attivato tramite Cambio Audio per avere reazioni diverse, ad esempio disattiva le earcon per audio cambiare eventi. Il cercatore invia un messaggio per comunicare al provider che era una connessione avviata da Cambio Audio.
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio Audio | 0x07 |
1 | uint8 | Notifica connessione avviata per Cambio Audio | 0x40 |
2 - 3 | uint16 | Dati aggiuntivi | 17 |
4 | uint8 | Indicazione di connessione avviata per cambio audio | varia 0: questa connessione non è stata attivata da Cambio Audio. 1: si trattava di una connessione avviata da Cambio Audio. |
5 - 12 | Nonce messaggio | varia | |
13 - 20 | Codice di autenticazione del messaggio | varia |
Tabella 4.3.4.0: Connessione di commutazione di audio notifica avviata
Indica la chiave dell'account in uso
Se più chiavi account nel dispositivo di ricerca (ad es. multiutente) sono associate a il provider, il ricercatore utilizzerà il messaggio riportato di seguito per indicare quale account sia 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 | Dati aggiuntivi | 22 |
4 - 9 | utf8 | Stringa in uso | UTF8 ("in uso") |
10 - 17 | Nonce messaggio | varia | |
18 - 25 | Codice di autenticazione del messaggio | varia |
Tabella 4.3.4.1: Indicare la chiave dell'account in uso
Dopo aver ricevuto questo messaggio, il provider può sapere quale chiave dell'account è in uso verificando il codice di autenticazione del messaggio.
Invia dati personalizzati
Il dispositivo di ricerca Cambio Audio attivo può incapsulare le informazioni (ad esempio, (utilizzo) dello stream audio in un byte di dati personalizzato e invialo al provider utilizzando il messaggio riportato di seguito:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio Audio | 0x07 |
1 | uint8 | Invia dati personalizzati | 0x42 |
2 - 3 | uint16 | Dati aggiuntivi | 17 |
4 | uint8 | Dati personalizzati | varia |
5 - 12 | Nonce messaggio | varia | |
13 - 20 | Codice di autenticazione del messaggio | varia |
Tabella 4.3.4.2: Inviare dati personalizzati
Alla ricezione dei dati personalizzati, il fornitore aggiornerà il pacchetto pubblicitario per includere i dati personalizzati. Per un provider multipunto, deve anche inviare una notifica lo stato della connessione passa a un altro ricercatore connesso che utilizza la stessa chiave di account.
Imposta destinazione connessione per il rilascio
Sulle cuffie multipunto, se la connessione preferita da interrompere non è usato meno di recente, chi cerca il cambio audio può indicare al provider quale dispositivo che vuoi abbandonare utilizzando il messaggio seguente:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Cambio Audio | 0x07 |
1 | uint8 | Imposta destinazione connessione per il rilascio | 0x43 |
2 - 3 | uint16 | Dati aggiuntivi | 17 |
4 | uint8 | Destinazione del dispositivo connesso da eliminare | varia 1: questo dispositivo |
5 - 12 | Nonce messaggio | varia | |
13 - 20 | Codice di autenticazione del messaggio | varia |
Tabella 4.3.4.3: Impostare la destinazione per l'interruzione della connessione
Implementazione dei riferimenti
Consulta Libreria SDK incorporata nelle vicinanze per l'implementazione di riferimento