Cambio Audio

Poiché gli utenti utilizzano sempre più dispositivi di origine audio per svolgere le loro attività quotidiane, cresce la domanda di una soluzione più semplice per gestire l'utilizzo delle cuffie su tutti i dispositivi. La funzionalità Cambio Audio consente di trasferire senza problemi le connessioni delle cuffie tra i dispositivi in base all'attività utente (ad esempio l'avvio di un film) e alla priorità degli eventi (ad esempio una chiamata in arrivo).

Principi relativi all'esperienza utente

  1. Il cambio di connessione dovrebbe essere rapido e basato sull'azione dell'utente.
  2. Il passaggio di connessione deve essere trasparente per gli utenti, in modo da consentire loro di controllare/ripristinare le operazioni indesiderate.
  3. Il passaggio dovrebbe rispettare la privacy dell'utente.

Ruoli

Ricerca cambio audio: è un dispositivo per la sorgente audio (ad esempio, un telefono o un tablet) che cerca cuffie da connettere nelle vicinanze, ove applicabile.

Fornitore cambio audio: il Fornitore è in genere un paio di cuffie che pubblicizza la sua presenza e lo stato della connessione ai Ricercatori affinché possano prendere decisioni in merito al passaggio.

Panoramica dei requisiti

Per ottenere 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:
  • Il dispositivo di origine originale sospenderà automaticamente la riproduzione dell'audio quando il fornitore si disconnetterà.
Per i fornitori multipunto:
  • Se è ancora disponibile una connessione, la richiesta di connessione verrà accettata.
  • Se la larghezza di banda della connessione è piena, disconnetti la connessione meno utilizzata di recente (ad es. nessun evento audio per lungo tempo) e accetta la nuova richiesta in entrata.
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 passaggio, il provider può avere una modalità di scansione delle pagine predefinita nella maggior parte dei casi (modalità a basso consumo, l'intervallo di scansione non deve essere superiore a 1280 ms). Tuttavia, è necessario utilizzare la modalità a bassa latenza nelle seguenti situazioni:
  • Primi 30 secondi di accensione
  • Primi 30 secondi senza connessione o paging
  • Primi 30 secondi di inattività del dispositivo
Obbligatorio
Cronologia connessioni Per tornare alla connessione precedente e riprendere la riproduzione, se applicabile.
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.
Mantieni 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:
  • Stato connessione
  • Tipo audio della connessione attiva
  • Dati dell'account della connessione attiva
  • Dispositivi connessi
Includi lo stato della connessione in Annunci BLE e Message Stream. Obbligatorio
Modifica delle funzionalità di runtime La funzionalità Cambio Audio può essere attivata eseguendo l'upgrade del firmware sul provider, pertanto le funzionalità devono essere sincronizzate tra Seeker e il provider durante il runtime. Implementa le API Message Stream per accedere alle funzionalità di runtime. Obbligatorio
Regole di passaggio 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, Seeker Cambio Audio potrebbe fornire impostazioni UI per consentire agli utenti di attivare/disattivare il passaggio automatico tra lo streaming di contenuti multimediali e le chiamate.
La ricerca di 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 dispositivi connessi.
Facoltativo
Cambio dispositivo attivo Consenti a Ricercatore di Cambio Audio di simulare il cambio di dispositivo tra dispositivi connessi.
Sul lato Ricercatore di Cambio Audio, potrebbe essere disponibile un'interfaccia utente che consente agli utenti di passare facilmente da un dispositivo connesso all'altro.
Solo per provider multipunto.
Implementa le API Message Stream per Audio switch Seeker per determinare la sorgente audio attiva tra i dispositivi connessi.
Obbligatorio
Notifica di passaggio multipunto Consenti alla funzionalità Ricerca Cambio Audio di mostrare la notifica di passaggio. Solo provider multipunto.
Implementa le API Message Stream per notificare ai ricercatori di cambio audio connessi quando viene effettuato un passaggio multipunto.
Obbligatorio

Payload pubblicità

Il Fornitore deve includere nell'annuncio il proprio stato di connessione attuale, basato sui dati dell'account ad accoppiamento rapido descritti nella sezione Pubblicità: quando non rilevabile.

Tieni presente che la versione della tabella 4.2 è 0 x 1.

Campo Stato connessione

Ottetto Tipo di dati Descrizione Valore Obbligatorio?
0 uint8 Lunghezza e tipo del campo
0bLLLLTTTT
  • L = lunghezza dello stato della connessione in byte
  • T = tipo
0bLLLL0101
  • durata: varia
  • tipo = 0b0101
Obbligatorio
1 uint8 Stato della connessione
0bHAFRSSSS
  • H = rilevamento sulla testa
  • A = disponibilità della connessione
  • F = modalità di messa a fuoco
  • R = riconnessione automatica
  • S = stato della connessione
0bHAFRSSSS
Obbligatorio
2 uint8 Dati personalizzati
Al momento contiene solo tipi di contenuti utilizzati per descrivere l'utilizzo dello streaming audio corrente. Il Ricercatore invierà le informazioni al Fornitore.
Il valore viene inviato dal Ricercatore del flusso di streaming attivo corrente al provider tramite il flusso di messaggi. 0 se lo streaming attivo corrente non proviene da Seeker. 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à dal numero di dispositivi collegati del provider.
Il bit mappato è impostato su 1 se il dispositivo è attualmente connesso al provider, 0 in caso contrario.
Vedi Bitmap del dispositivo connesso per i dettagli
Facoltativo

Tabella 4.1: Dati non elaborati del campo Stato della connessione

Flag di connessione
  • 0bH = rilevamento sulla testa

    • 1, in testa ora
    • 0, altrimenti non sulla testa o nessun sensore OHD
  • 0bA = disponibilità della connessione

    • 1, è disponibile una connessione
    • 0, in caso contrario
  • 0bF = modalità Niente distrazioni

    • 1. In modalità Messa a fuoco non è consentito il passaggio da una connessione ad un'altra per l'utilizzo di contenuti multimediali, ad esempio da A2DP ad A2DP
    • 0, in caso contrario
  • 0bR = ricollegamento automatico

    • 1: se la connessione corrente viene ricollegata automaticamente dal provider, ovvero non è connessa dagli utenti (per il multipunto, se una delle connessioni esistenti viene ricollegata automaticamente, deve essere impostata su 1)
    • 0, in caso contrario
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, utilizzando 0xF)
  • 0x4: streaming A2DP, AVRCP non applicabile
  • 0x5: streaming A2DP e riproduzione AVRCP
  • 0x6: streaming HFP (chiamata telefonica/voip), inclusa la suoneria in-band e non in-band
  • 0x7: LE audio - streaming multimediale senza controllo
  • 0x8: LE audio - streaming multimediale con controllo
  • 0x9: LE audio - streaming chiamate
  • 0xA: LE audio - trasmissione
  • 0xF: disattiva temporaneamente l'interruttore di connessione (ad esempio, aggiornamento firmware)
Bitmap del dispositivo connesso

Per evitare un cambio di connessione indesiderato, il Seeker potrebbe dover sapere a quali dispositivi sono attualmente connessi le cuffie. Ad esempio, quando le cuffie sono collegate allo smartphone, l'utente non vuole essere interrotto dal cambio di connessione quando un membro del gruppo Famiglia avvia YouTube sul tablet.

Tieni presente che questa bitmap è anonima, il Ricercatore non è in grado di sapere quali altri dispositivi sono collegati al provider. Ad esempio, prendiamo 5 dispositivi collegati:

  • 0: laptop (0bx0000000)
  • 1: telefonoA (0b0x000000)
  • 2: telefonoB (0b00x00000)
  • 3: tablet (0b000x0000)
  • 4: TV (0b0000x000)

Se gli attuali dispositivi connessi sono un laptop e un tablet, il valore della bitmap sarà 0b10010000. La modifica dell'ordine è accettabile se inevitabile, ad esempio quando gli utenti ripristinano i dati di fabbrica delle cuffie o quando il numero di dispositivi collegati raggiunge il limite massimo.

Pubblicità casuale rimborsabile

Per evitare il monitoraggio e rispettare la privacy degli utenti, il Fornitore dovrebbe ruotare e criptare il campo in base alla chiave dell'account utilizzando l'algoritmo AES-CTR:

 encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)

dove

  1. La chiave viene ricavata dalla chiave dell'account in uso, 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 provider utilizzerà la chiave dell'account originale qui, ovvero il primo byte della chiave è 0x04, non incluso nel pattern di utilizzo.

  2. IV (vettore iniziale) è il sale a 2 byte dei dati delle chiavi dell'account con padding zero, ad esempio IV è concat(salt, zeri di 14 byte).

  3. I dati non elaborati relativi allo 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 pubblicitario.

In questo modo il campo dello stato della connessione criptata ruota contemporaneamente alla rotazione dei dati della chiave dell'account.

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 risolvibili casuali varia Obbligatorio se l'elenco delle chiavi dell'account non è vuoto,
altrimenti sono escluse.

Tabella 4.2: annuncio BLE con dati risolvibili casuali

I dati risolvibili casuali contengono:

Ottetto Tipo di dati Descrizione Valore Obbligatorio?
0 uint8 Lunghezza e tipo del campo
0bLLLLTTTT
  • L = lunghezza dei dati criptati
  • T = tipo
0bLLLL0110
  • durata: varia
  • tipo = 0b0110
Obbligatorio
1 - var Dati criptati varia Obbligatorio

Tabella 4.2.1: Dati risolvibili casuali

Ad esempio, se i dati risolvibili casuali contengono un campo di stato della connessione criptata, il risultato decriptato sarà il campo dello stato della connessione.

Per evitare manomissioni, i dati chiave dell'account riportati sopra devono essere leggermente modificati quando i dati risolvibili casuali sono inclusi nell'annuncio. Normalmente, durante la creazione del filtro della chiave dell'account, viene generato un valore V combinando il filtro della chiave dell'account con un sale. Al contrario, quando vengono pubblicizzati anche dati risolvibili casuali, il valore V deve 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 passaggio della connessione si basa sull'account, pertanto il fornitore deve includere i dati dell'account della connessione corrente nell'annuncio BLE. Se il dispositivo connesso corrente è un Cercatore Cambio Audio, il provider dovrebbe essere in grado di ottenere la chiave dell'account associata a questo ricercatore e utilizzare questa chiave dell'account per criptare il campo dello stato della connessione. Se la sorgente audio collegata non è un Cerca cambio audio, 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 degli account in modo da includere uno dei seguenti pattern in uso:

  1. 0b00000100
    Questa chiave dell'account non è in uso.
    Questa è quella predefinita (vedi Chiave account).
  2. 0b00000101
    Questa chiave dell'account è la chiave dell'account utilizzata più di recente.
    Il campo dello stato della connessione è criptato da questa chiave dell'account. Nessuna informazione sulla chiave dell'account per lo stato attuale della connessione. È possibile che non ci siano dispositivi connessi o che il dispositivo connesso non sia un Ricerca Cambio Audio.
  3. 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 dispositivo connesso corrente è associato a questa chiave dell'account.

Schema del payload di Cambio Audio

La figura seguente mostra lo schema per il payload di Cambio Audio.

Messaggi

Una volta connessi, Seeker e il provider possono utilizzare lo stream di messaggi per sincronizzare la funzionalità di commutazione audio, attivare un commutatore di connessione, impostare e ottenere la preferenza di cambio, notificare lo stato della connessione e così via. Creiamo un gruppo di messaggi e codici messaggio specifici per Cambio Audio, come indicato di seguito.

Nome del gruppo di messaggi Valore
Cambio Audio 0x07

Ulteriori dettagli per ogni codice messaggio sono inclusi nelle sezioni seguenti.

Nome codice messaggio Valore Solo multipunto Mittente Chi risponde Cripta MAC ACK
Funzionalità Cambio Audio 0x10 No Entrambi Entrambe, tramite codice 0x11 No No No
Funzionalità di notifica per Cambio Audio 0x11 No Entrambi Entrambi No
Imposta stato multipunto 0x12 Ricercatore Fornitore No
Imposta la preferenza di passaggio 0x20 Ricercatore Fornitore No
Ottieni la preferenza per il passaggio 0x21 Ricercatore Fornitore, tramite codice 0x22 No No No
Notifica il cambio di preferenza 0x22 Fornitore Ricercatore No No No
Cambiare la sorgente audio attiva(al dispositivo connesso) 0x30 Ricercatore Fornitore No
Tornare a un dispositivo disconnesso 0x31 No Ricercatore Fornitore No
Notifica evento di passaggio multipunto 0x32 Fornitore Ricercatore No No No
Conoscere lo stato della connessione 0x33 Ricercatore Fornitore, tramite codice 0x34 No No No
Invia una notifica sullo stato della connessione 0x34 Fornitore Ricercatore No No
Notifica connessione avviata Cambio Audio 0x40 No Ricercatore Fornitore No
Indica la chiave dell'account in uso 0x41 No Ricercatore Fornitore No
Inviare dati personalizzati 0x42 No Ricercatore Fornitore No
Impostare la destinazione della connessione di caduta 0x43 Ricercatore Fornitore No

Tabella 4.3: Messaggi di Cambio Audio

MAC dei messaggi Cambio Audio

Per fornire l'autenticazione dei messaggi, tutti i messaggi Cambio Audio con dati aggiuntivi inviati dal mittente al provider richiedono un codice di autenticazione dei messaggi. Alla ricezione di un messaggio con MAC, questo deve essere accreditato in modo che il richiedente sappia se il provider ha reagito o meno al messaggio.

Se l'autenticazione del messaggio ha esito positivo, il provider invierà l'ACK per il messaggio:

Ottetto Tipo di dati Descrizione Valore
0 Uint8 Accettazione 0xFF
1 Uint8 ACK 0x01
2 - 3 Uint16 Lunghezza dei dati aggiuntivi varia
4 Uint8 Cambio Audio 0x07
5 Uint8 Codice messaggio Cambio Audio varia
6-sec Dati aggiuntivi varia

In caso di esito negativo, il Fornitore dovrà inviare il NAK per il messaggio:

Ottetto Tipo di dati Descrizione Valore
0 Uint8 Accettazione 0xFF
1 Uint8 ND 0x02
2 - 3 Uint16 Lunghezza dei dati aggiuntivi 0x0003
4 Uint8 Motivo errore varia
5 Uint8 Cambio Audio 0x07
6 Uint8 Codice messaggio Cambio Audio varia

Tieni presente che, se il provider è il mittente, l'indirizzo MAC non è obbligatorio.

Ottieni la funzionalità Cambio Audio

Sia il provider Cambio Audio sia il cercatore possono verificare se il provider/Ricerca ad accoppiamento rapido connesso supporta o meno la funzionalità 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 Lunghezza dei dati aggiuntivi 0

Tabella 4.3.1.0: Possibilità di utilizzare Cambio Audio

Funzionalità di notifica per Cambio Audio

Dopo aver ricevuto il codice del messaggio per la funzionalità di cambio audio, 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 per Cambio Audio 0x11
2 - 3 Uint16 Lunghezza dei dati aggiuntivi 20 se inviato dal richiedente
4 se inviato dal provider
4 - 5 Uint16 Codice versione 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
6 - 7 flags Flag di funzionalità Cambio Audio del provider
Se l'invio viene inviato da Seeker, questi due byte devono essere ignorati.
varies
Consulta Flag per la 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 per Cambio Audio

Flag per funzionalità Cambio audio
  1. Bit 0 (ottetto 6, MSB): stato Cambio Audio

    • 1, se lo stato Cambio Audio è attivo
    • 0, in caso contrario
  2. 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)
  3. Bit 2: stato attuale multipunto

    • 1, se il multipunto è attivo
    • 0, in caso contrario
  4. Bit 3: rilevamento in testa

    • 1, se il dispositivo supporta il rilevamento on-head (anche se il rilevamento on-head è ora disattivato)
    • 0, in caso contrario
  5. Bit 4: stato attuale del rilevamento on-head

    • 1, se il rilevamento on-head è attivo
    • 0, altrimenti (non supporta il rilevamento on-head o il rilevamento on-head è disabilitato)
  6. Tutti gli altri bit sono riservati, il valore predefinito è 0.

Imposta stato multipunto

In Ricercatori di Cambio Audio potremmo fornire agli utenti l'impostazione per attivare/disattivare la funzionalità multipunto. Il Seeker imposterà lo stato multipunto sul provider utilizzando il messaggio seguente:

Ottetto Tipo di dati Descrizione Valore
0 Uint8 Cambio Audio 0x07
1 Uint8 Imposta stato multipunto 0x12
2 - 3 Uint16 Lunghezza dei 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 Cambio Audio può modificare la preferenza di commutazione del multipunto e impostarla sul 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 Lunghezza dei dati aggiuntivi 18
4 flags Preferenza di cambio varia
Consulta il flag di preferenza per il passaggio da più punti
5 Impostazioni di commutazione avanzate
Questo byte è riservato, il valore predefinito è 0
varia
6 - 13 Nonce messaggio varia
14 - 21 Codice di autenticazione del messaggio varia

Tabella 4.3.2.0: Impostazione delle preferenze di commutazione

Flag per preferenza cambio multipunto
  • Bit 0 (MSB): A2DP rispetto a A2DP (predefinito 0)
  • Bit 1: HFP rispetto a HFP (valore predefinito 0)
  • Bit 2: A2DP vs HFP (predefinito 0)
  • Bit 3: HFP vs A2DP (predefinito 1)
  • Bit 4-7: riservato
  • Sopra è rappresentato come "nuova richiesta di profilo" e come "profilo attivo corrente"
    • 0 per il mancato passaggio
    • 1 per il passaggio

Ottieni la preferenza di passaggio

Chi cerca Cambio Audio può eseguire query sulla preferenza di commutazione del multipunto dal provider utilizzando il messaggio seguente:

Ottetto Tipo di dati Descrizione Valore
0 Uint8 Cambio Audio 0x07
1 Uint8 Ottieni il passaggio alla configurazione 0x21
2 - 3 Uint16 Lunghezza dei dati aggiuntivi 0

Tabella 4.3.2.1: Ottenere la preferenza di passaggio

Notifica cambio preferenza

Ottetto Tipo di dati Descrizione Valore
0 Uint8 Cambio Audio 0x07
1 Uint8 Notifica cambio preferenza 0x22
2 - 3 Uint16 Lunghezza dei dati aggiuntivi 2
4 flags Cambiare i flag delle preferenze varia
Consulta il flag di preferenza per il passaggio da più punti
5 Impostazioni di commutazione avanzate
Questo byte è riservato, il valore predefinito deve essere 0
varia

Tabella 4.3.2.2: Notifica preferenza di cambio

Cambia la sorgente audio attiva (al dispositivo connesso)

Chi cerca Cambio Audio può richiedere al provider multipunto di cambiare la sorgente audio attiva tra i dispositivi connessi utilizzando il seguente messaggio:

Ottetto Tipo di dati Descrizione Valore
0 Uint8 Cambio Audio 0x07
1 Uint8 Cambia la sorgente audio attiva (al dispositivo connesso) 0x30
2 - 3 Uint16 Lunghezza dei dati aggiuntivi 17
4 flags Cambiare i flag dell'evento di origine audio attivo varia
Consulta Cambio di un evento di sorgente audio attiva
5 - 12 Nonce messaggio varia
13 - 20 Codice di autenticazione del messaggio varia

Tabella 4.3.3.0: Cambia la sorgente audio attiva (al dispositivo connesso)

Cambio dell'evento di origine audio attiva
  • Bit 0 (MSB): 1 passaggio a questo dispositivo, 0 passaggio al secondo dispositivo connesso
  • Bit 1: 1 riprendi la riproduzione sull'interruttore sul dispositivo dopo lo switch, 0 altrimenti. Se riprendi la riproduzione, il Fornitore invia una notifica PLAY al Cercatore tramite il profilo AVRCP. Se lo stato precedente (prima della disattivazione) non era PLAY, il provider deve ignorare questo flag.
  • Bit 2: 1 rifiuto SCO su dispositivo spento, 0 altrimenti
  • Bit 3: 1 disconnette il Bluetooth in caso di spegnimento dispositivo, 0 altrimenti.
  • Bit 4-7: riservati.

Chi cerca Cambio Audio potrebbe non conoscere sempre correttamente il proprio stato, quindi il provider può ricevere un messaggio di passaggio a questo dispositivo quando il richiedente è già il dispositivo attivo. In questo caso, per mostrare l'interfaccia utente corretta su Seeker, il provider può inviare una richiesta NAK con il motivo dell'errore, ovvero 0x4 - Azione ridondante del dispositivo.

Torna all'impostazione (a dispositivo disconnesso)

Se il cambio di connessione è indesiderato, gli utenti possono annullarlo e, in determinati scenari, ha senso ripristinare la connessione audio per ridurre al minimo le interruzioni. Il Cercatore utilizzerà il messaggio seguente per attivare il passaggio alla modalità precedente:

Ottetto Tipo di dati Descrizione Valore
0 Uint8 Cambio Audio 0x07
1 Uint8 Torna all'impostazione (a dispositivo disconnesso) 0x31
2 - 3 Uint16 Lunghezza dei dati aggiuntivi 17
4 Uint8 Evento "Torna indietro" varia
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: Ripristino del dispositivo disconnesso

Per i provider multipunto, per effettuare un cambio di connessione, un provider può interrompere la connessione a un dispositivo di origine audio e mettere in pausa la sessione audio sull'altra sorgente audio. Ad esempio, supponiamo che le cuffie multipunto siano collegate a un tablet e a un terzo dispositivo Cambio Audio supportato. L'utente sta guardando il video sul tablet quando c'è una chiamata in arrivo sul suo telefono. Il telefono attiverà un interruttore di connessione sulle cuffie, che deve interrompere la connessione del terzo dispositivo per connettersi al telefono, mettendo anche in pausa la sessione multimediale sul tablet per scaricare la suoneria dal telefono. Se l'utente rifiuta la chiamata, il telefono potrebbe chiedere alle cuffie di "tornare indietro e riprendere la riproduzione". Alla ricezione di questa richiesta, le cuffie devono riconnettersi al terzo dispositivo e riprendere la riproduzione del video in pausa sul tablet.

Notifica evento di passaggio multipunto

Per informare gli utenti che si verifica un evento di passaggio multipunto, lo strumento Ricerca Cambio Audio potrebbe mostrare una notifica agli utenti. Il provider deve avvisare i cercatori di cambio audio connessi del passaggio.

Ottetto Tipo di dati Descrizione Valore
0 Uint8 Cambio Audio 0x07
1 Uint8 Notifica evento di commutazione multipunto
Il provider deve inviarlo a ogni interruttore, incluso Cambio Audio in cerca di Cambio Audio, Cambio non audio Cercatore Cambio Audio e Cambio Audio Cercatore Cambio Audio Ricercatore in caso di Cambio Audio
0x32
2 - 3 Uint16 Lunghezza dei dati aggiuntivi varia
4 Uint8 Motivo del cambio varia
0x00: non specificato
0x01: streaming A2DP
0x02: HFP
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 è Audio Switch Seeker, che utilizza il nome a cui è stato inviato il Seeker e, in caso contrario, il nome BT, se non applicabile, utilizzando gli ultimi 2 byte dell'indirizzo
varia

Tabella 4.3.3.2: Notifica evento di commutazione multipunto

Ottieni lo stato della connessione

Il Ricercatore può ottenere lo stato della connessione attuale dal provider:

Ottetto Tipo di dati Descrizione Valore
0 Uint8 Cambio Audio 0x07
1 Uint8 Ottieni lo stato della connessione 0x33
2 - 3 Uint16 Lunghezza dei dati aggiuntivi 0

Tabella 4.3.3.3: Recuperare lo stato della connessione

Dopo aver ricevuto questo messaggio, il Fornitore risponderà con il codice messaggio 0x34 informando lo stato della connessione.

Notifica stato connessione

Come definito nel payload pubblicitario BLE, per i fornitori multipunto, se lo stato della connessione cambia, tranne per la modifica del pacchetto pubblicitario, il Fornitore deve anche informare della modifica i Ricercatori connessi che utilizzano la stessa chiave dell'account. Se il Provider è connesso con un Cercatore Cambio Audio e con un Ricercatore non in Ricerca audio, se quest'ultimo non è attivo, il Provider deve anche informare lo stato della connessione al Cercatore di Cambio Audio connesso (utilizzando il tasto dell'account di Ricerca).

Ottetto Tipo di dati Descrizione Valore
0 Uint8 Cambio Audio 0x07
1 Uint8 Notifica stato connessione 0x34
2 - 3 Uint16 Lunghezza dei dati aggiuntivi varia
4 Uint8 Flag del dispositivo attivo varia
0x00: questo Cercatore è passivo e il dispositivo attivo utilizza la stessa chiave account
0x01: questo Cercatore è il dispositivo attivo
0x02: questo Cercatore è passivo, mentre il dispositivo attivo non è un Cercatore audio.
5 - n Stato della connessione criptata varia
n+1 - n+8 Nonce messaggio varia

Tabella 4.3.3.4: Notifica stato connessione

Messaggio sullo stato della connessione criptata

 encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)

dove:

Invia notifica per connessione avviata con Cambio Audio

I fornitori di Cambio Audio potrebbero dover sapere se il cambio di connessione viene attivato da Cambio Audio per avere reazioni diverse, ad esempio disattivare le earcon per gli eventi Cambio Audio. Il Cercatore invia un messaggio per notificare al provider che si tratta di una connessione avviata da Cambio Audio.

Ottetto Tipo di dati Descrizione Valore
0 Uint8 Cambio Audio 0x07
1 Uint8 Invia notifica per connessione avviata con Cambio Audio 0x40
2 - 3 Uint16 Lunghezza dei dati aggiuntivi 17
4 Uint8 Indicazione di connessione avviata dal cambio audio varia
0: questa connessione non è stata attivata da Cambio Audio
1: si trattava di una connessione avviata con Cambio Audio
5 - 12 Nonce messaggio varia
13 - 20 Codice di autenticazione del messaggio varia

Tabella 4.3.4.0: Notifica connessione avviata con cambio audio

Indica la chiave dell'account in uso

Se più chiavi dell'account nel ricercatore (ad esempio multiutente) sono associate al provider, quest'ultimo utilizzerà il messaggio seguente per indicare la chiave dell'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 dei 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: Indicazione della chiave dell'account in uso

Alla ricezione di questo messaggio, il provider può sapere quale chiave dell'account è in uso verificando il codice di autenticazione del messaggio.

Invia dati personalizzati

Il Ricercatore Cambio Audio attivo può incapsulare le informazioni (ad esempio l'utilizzo di audio) dello stream audio in un byte di dati personalizzato e inviarle al provider utilizzando il messaggio seguente:

Ottetto Tipo di dati Descrizione Valore
0 Uint8 Cambio Audio 0x07
1 Uint8 Invia dati personalizzati 0x42
2 - 3 Uint16 Lunghezza dei 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

Dopo aver ricevuto i dati personalizzati, il provider aggiorna il pacchetto pubblicitario in modo da includere i dati personalizzati. Per un provider multipunto, deve anche notificare la modifica dello stato della connessione a un altro ricercatore connesso utilizzando la stessa chiave dell'account.

Imposta destinazione della connessione

Sulle cuffie multipunto, se la connessione preferita da interrompere non è quella meno recente utilizzata, chi cerca Cambio Audio può indicare al provider quale dispositivo interrompere utilizzando il messaggio seguente:

Ottetto Tipo di dati Descrizione Valore
0 Uint8 Cambio Audio 0x07
1 Uint8 Imposta destinazione della connessione 0x43
2 - 3 Uint16 Lunghezza dei dati aggiuntivi 17
4 Uint8 Dispositivo connesso di destinazione 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 della connessione di interruzione

Implementazione dei riferimenti

Per l'implementazione di riferimento, consulta Libreria SDK incorporata nelle vicinanze