Supporto dell'audio degli apparecchi acustici tramite Bluetooth LE

Gli apparecchi acustici (HA) possono avere una migliore accessibilità su Dispositivi mobili basati su Android tramite L2CAP orientato alla connessione (CoC) tramite Bluetooth Low Energy (BLE). Il CdC utilizza un elastico buffer di diversi pacchetti audio per mantenere un flusso audio costante, in presenza di perdita di pacchetti. Questo buffer fornisce qualità audio per apparecchi acustici a scapito della latenza.

La progettazione del CdC fa riferimento Bluetooth Versione 5 della specifica di base (BT). Per rimanere allineati con le specifiche principali, tutti i pod i valori su questa pagina devono essere letti come Litt-endian.

Terminologia

  • Central: il dispositivo Android che cerca annunci pubblicitari via Bluetooth.
  • Periferica: l'apparecchio acustico che invia di pacchetti pubblicitari tramite Bluetooth.

Topologia di rete e architettura di sistema

Quando si utilizza CoC per gli apparecchi acustici, la topologia di rete presuppone che venga utilizzata una singola centrale e due periferiche, una sinistra e una destra, come si vede Figura 1. Il sistema audio Bluetooth guarda a sinistra e le periferiche giuste come un singolo sink audio. Se una periferica è non a causa di un adattamento monofonico o di una perdita di connessione, centrale mixa i canali audio destro e sinistro e trasmette l'audio alla periferica rimanente. Se la centrale perde la connessione periferiche, la centrale considera il link al sink audio hanno perso. In questi casi, la centrale instrada l'audio a un'altra uscita.


Figura 1. Topologia per l'accoppiamento di apparecchi acustici con Dispositivi mobili Android che utilizzano CoC tramite BLE

Quando la centrale non trasmette dati audio in streaming alla periferica e può una connessione BLE, la centrale non deve disconnettersi periferica. Mantenimento della connessione consente alla comunicazione dei dati al server GATT presente sulla periferica.

Durante l'accoppiamento e la connessione di protesi uditive, la centrale deve:

  • Tieni traccia delle periferiche destra e sinistra più recenti accoppiate.
  • Supponi che le periferiche siano in uso se esiste un accoppiamento valido. La la centrale tenta di connettersi o riconnettersi dispositivo quando si perde la connessione.
  • Se un accoppiamento viene eliminato, supponiamo che le periferiche non siano più in uso.

Nei casi precedenti, per accoppiamento si intende l'azione registrare un set di apparecchi acustici con un determinato UUID e indicatori sinistro/destro nel sistema operativo, non il processo di accoppiamento Bluetooth.

Requisiti di sistema

Per implementare correttamente CoC per una buona esperienza utente, il Bluetooth nei dispositivi centrali e periferici devono:

  • implementare un controller conforme BT 4.2 o superiore. LE Secure Connections è vivamente consigliato.
  • disporre di un supporto centrale per almeno 2 collegamenti LE simultanei con parametri descritto in Pacchetto audio formato e tempistiche.
  • la periferica deve supportare almeno un link LE con i parametri descritto in Pacchetto audio formato e tempistiche.
  • hanno un controllo del flusso basato sul credito LE [BT Vol 3, Part A, Sec 10.1]. I dispositivi devono supportare MTU e MPS di almeno 167 byte CoC ed essere in grado di memorizzare nel buffer fino a 8 pacchetti.
  • dispongono di un’estensione della lunghezza dei dati LE [BT Vol 6, Part B, Sec 5.1.9] con con un payload di almeno 167 byte.
  • fare in modo che il dispositivo centrale supporti il comando di aggiornamento della connessione HCI LE e rispettino le maximum_CE_Length e le Parametri minimum_CE_Length.
  • la centrale mantiene la velocità effettiva dei dati per due connessioni LE CoC a due diverse periferiche con intervalli di connessione e payload nel pacchetto audio formato e tempistiche.
  • in cui la periferica sia impostata su MaxRxOctets Parametri MaxRxTime in LL_LENGTH_REQ o LL_LENGTH_RSP frame per essere i valori obbligatori più piccoli necessari per queste specifiche. Questo consente alla centrale ottimizzare il proprio time scheduler per calcolare la quantità di tempo necessario per ricevere un frame.

È vivamente consigliato che la centrale e la periferica supportino 2 MB di PHY specificato nella specifica BT 5.0. La centrale deve supportare i link audio almeno 64 kbit/s su PHY 1M e 2M. Non utilizzare il PHY a lungo raggio BLE.

Il CdC utilizza i meccanismi Bluetooth standard per la crittografia a livello di link e salto di frequenza.

Servizi GATT ASHA

Una periferica deve implementare lo streaming audio per gli apparecchi acustici (ASHA) Servizio server GATT descritto di seguito. La periferica deve pubblicizzare questo servizio in modalità di rilevamento generale per consentire centrale riconoscerà un sink audio. Qualsiasi operazione di streaming LE audio richiede la crittografia. Lo streaming BLE audio è costituito le seguenti caratteristiche:

Caratteristica Proprietà Descrizione
ProprietàSolaLettura Letti Vedi ReadOnlyProperties.
Punto di controllo audio Scrittura e scrittura senza risposta Punto di controllo per lo stream audio. Consulta AudioControlPoint.
Punto di stato audio Lettura/notifica Campo del report di stato per il punto di controllo audio. Consulta AudioStatusPoint.
Volume Scrivi senza risposta Byte compreso tra -128 e 0 che indica la quantità di attenuazione da applicare il segnale audio in streaming, compreso tra -48 dB e 0 dB. Impostazione -128 deve essere interpretato come l'audio completamente disattivato, ovvero il volume più basso senza audio di attenuazione è -127, che equivale a -47,625 dB di attenuazione. Impostando il valore 0, un tono sinusoidale rail-to-rail trasmesso in streaming deve rappresentare un input di 100 dBSPL equivalente sull'apparecchio acustico. La centrale avrà un flusso nominale scala e utilizzare questa variabile per impostare il livello di presentazione desiderato la periferica.
LE_PSM_OUT Letti PSM da utilizzare per il collegamento del canale audio. Da scegliere tra gamma dinamica [BT Vol 3, Part A, Sec 4.22]

Gli UUID assegnati al servizio e alle caratteristiche:

UUID del servizio: {0xFDF0}

Caratteristica UUID
ProprietàSolaLettura {6333651e-c481-4a3e-9169-7c902aad37bb}
Punto di controllo audio {f0d4de7e-4a88-476c-9d9f-1937b0996cc0}
Stato audio {38663f1a-e711-4cac-b641-326b56404837}
Volume {00e4ca9e-ab14-41e4-8823-f9e70c7e91df}
LE_PSM_OUT {2d410339-82b6-42aa-b34e-e2e01df8cc1a}

Oltre al servizio ASHA GATT, la periferica deve anche implementare il Device Information Service per consentire alla centrale di rilevare i nomi dei produttori e i nomi dei dispositivi della periferica.

ProprietàSolaLettura

ReadOnlyProperties ha i seguenti valori:

Byte Descrizione
0 Versione: deve essere 0x01
1 Vedi DeviceCapabilities.
2-9 Vedi HiSyncId.
10 Vedi FeatureMap.
11-12 Ritardo di rendering. Si tratta del tempo, in millisecondi, trascorso da quando riceve un frame audio fino al rendering della periferica l'output. Questi byte possono essere usati per ritardare un video si sincronizzano con l'audio.
13-14 Riservato per un uso futuro. Inizializza a zeri.
15-16 ID codec supportati. Questa è una maschera di bit di ID codec supportati. A 1 corrisponde a un codec supportato. Ad esempio, 0x0002 indica che G.722 a 16 kHz è supportato. Tutti gli altri bit devono essere impostati su 0.

Funzionalità dispositivo

Punta Descrizione
0 Lato dispositivo (0: sinistra, 1: destra)
1 Indica se il dispositivo è autonomo e riceve dati in formato mono o se il Il dispositivo fa parte di un insieme (0: monofonico, 1: binaurale)
2 Il dispositivo supporta CSIS (0: non supportato, 1: supportato)
3-7 Riservato (impostato su 0)

HiSyncID

Questo campo deve essere univoco per tutti i dispositivi binaurali, ma deve essere il lo stesso per il gruppo destro e sinistro.

Byte Descrizione
0-1 ID del produttore. È la Società Identificatori assegnati da BTSIG.
2-7 ID univoco che identifica il set di apparecchi acustici. È necessario impostare questo ID alla stessa periferica sinistra e destra.

Mappa caratteristiche

Punta Descrizione
0 Streaming in uscita audio LE CoC supportato (Sì/No).
1-7 Riservato (impostato su 0).

ID codec

Se il bit è impostato, quel particolare codec è il supporto.

ID / Numero bit Codec e frequenza di campionamento Velocità in bit richiesta Durata frame Obbligatorio in zona centrale (C) o periferica (P)
0 Riservata Riservata Riservata Riservata
1 G.722 a 16 kHz 64 kbit/s Variabile C e P
Ne sono riservate 2-15.
È riservato anche 0.

Punto di controllo audio

Questo punto di controllo non può essere utilizzato quando il CoC LE è chiuso. Consulta Avvio e interrompendo uno stream audio per la descrizione della procedura.

Codice operativo Argomenti Procedura secondaria GATT Descrizione
1 «Start»
  • uint8_t codec
  • uint8_t audiotype
  • int8_t volume
  • int8_t otherstate
Scrivi con risposta e attendi un'ulteriore notifica di stato tramite caratteristica AudioStatusPoint. Indica alla periferica di reimpostare il codec e avviare del frame 0. Il campo codec indica l'ID codec da utilizzare per questa riproduzione. Ad esempio, il campo codec è "1" per G.722 a 16k Hz.

Il campo di bit del tipo di audio indica i tipi di audio presenti. nello stream:
  • 0 - Sconosciuto
  • 1 - Suoneria
  • 2 - Chiamata telefonica
  • 3 - Contenuti multimediali
Il campo otherstate indica se l'altro lato della configurazione binaurale è connesso. Il valore del campo è 1 se l'altro dispositivo periferico è connesso In caso contrario, il valore è 0.

La periferica non deve richiedere aggiornamenti della connessione prima di un È stata ricevuta l'operazione «Stop».
2 «Stop» Nessuno Scrivi con risposta e attendi un'ulteriore notifica di stato tramite caratteristica AudioStatusPoint. Indica alla periferica di interrompere il rendering dell'audio. Un nuovo audio la sequenza di configurazione deve essere avviata dopo questa interruzione nell'ordine indicato per eseguire nuovamente il rendering dell'audio.
3 «Status»
  • uint8_t connected
Scrivi senza risposta Informa la periferica connessa che è presente un aggiornamento di stato nella un'altra periferica. Il campo connesso indica il tipo di aggiornamento:
  • 0 - Altra periferica scollegata
  • 1 - Altra periferica connessa
  • 2 - Si è verificato un aggiornamento dei parametri di connessione LE su entrambe le connessioni

Punto di stato audio

Campo del report di stato per il punto di controllo audio

Codici operativi Descrizione
0 Stato OK
-1 Comando sconosciuto
-2 Parametri non ammessi

Pubblicità del servizio ASHA GATT

L'UUID del servizio deve trovarsi nel un pacchetto di pubblicità. Nella pubblicità o nella scansione di risposta, le periferiche devono includere i Dati di servizio:

Offset byte Nome Descrizione
0 Lunghezza ANNUNCIO >= 0 x 09
1 Tipo di annuncio 0x16 (Dati di servizio - UUID a 16 bit)
2-3 UUID del servizio 0xFDF0 (little-endian)

Nota: questo è un ID temporaneo.
4 Versione protocollo 0x01
5 Capacità
  • 0: lato sinistro (0) o destro (1)
  • 1: dispositivi singoli (0) o doppi (1).
  • 2 - il dispositivo supporta CSIS (<0: non supportato, 1: supportato)
  • 3-7 - prenotato. Questi bit devono essere zero.
6-9 HiSyncID troncato I quattro byte più significativi HiSyncId: Questi byte dovrebbero rappresentare la parte più casuale dell'ID.

Le periferiche devono avere un nome locale completo tipo di dati che indica il nome dell'apparecchio acustico. Questo nome essere utilizzati nell'interfaccia utente del dispositivo mobile, in modo che l'utente possa selezionare il dispositivo giusto. Il nome non deve indicare la freccia sinistra o destra canale poiché queste informazioni sono fornite DeviceCapabilities.

Se le periferiche inseriscono il nome e i tipi di dati del servizio ASHA nello stesso tipo di frame (ADV o SCAN RESP), quindi i due tipi di dati ("Nome locale completo" e "Dati di servizio per il servizio ASHA") verranno visualizzati all'interno dello stesso frame. In questo modo lo scanner del dispositivo mobile può recuperare nello stesso risultato della scansione.

Durante l'accoppiamento iniziale, è importante che le periferiche fare pubblicità a una velocità tale da consentire rapidamente al dispositivo mobile a scoprire le periferiche e ad associarle.

Sincronizza i dispositivi periferici destro e sinistro

Per utilizzare il Bluetooth sui dispositivi mobili Android, sui dispositivi periferici devono garantire che siano sincronizzati. La riproduzione sui dispositivi periferici destro e sinistro deve essere sincronizzato nel tempo. Entrambe le periferiche devono riprodurre i campioni audio dal contemporaneamente.

I dispositivi periferici possono sincronizzare il proprio orario utilizzando una sequenza numero anteposto a ogni pacchetto del payload audio. Il fulcro garantisce che i pacchetti audio destinati a essere riprodotti con su ciascuna periferica hanno lo stesso numero di sequenza. La sequenza di incrementi di uno dopo ogni pacchetto audio. Ogni sequenza è lungo 8 bit, quindi i numeri di sequenza si ripeteranno dopo 256 e pacchetti audio. Poiché la dimensione e la frequenza di campionamento di ogni pacchetto audio sono fisse per ogni connessione, le due periferiche possono ricavare il relativo l'ora di riproduzione. Per ulteriori informazioni sul pacchetto audio, consulta Formato del pacchetto audio e dell'audiodescrizione.

La centrale aiuta fornendo trigger ai dispositivi binaurali durante la potrebbe essere necessario. Questi attivatori informano ogni periferica dello stato del dispositivo periferico accoppiato ogni volta che si verifica un'operazione potrebbero influire sulla sincronizzazione. Gli attivatori sono:

  • Nell'ambito del comando «Start» di AudioControlPoint, l'attuale stato di connessione dell'altro lato della rete binaurale vengono forniti i dispositivi.
  • In caso di connessione, disconnessione un'operazione di aggiornamento dei parametri di connessione su una periferica il comando «Status» di AudioControlPoint viene inviato a dall'altro lato dei dispositivi binaurali.

Formato e tempi del pacchetto audio

L'inserimento di fotogrammi audio (blocchi di campioni) in pacchetti consente all'udito strumentali ricavando la sincronizzazione dagli ancoraggi dei tempi dello strato di link. A semplificare l'implementazione:

  • Un frame audio deve sempre corrispondere all'intervallo di connessione nel tempo. Ad esempio, se l'intervallo di connessione è di 20 ms e la frequenza di campionamento è 16 kHz, il frame audio dovrà contenere 320 campioni.
  • Le frequenze di campionamento nel sistema sono limitate a multipli di 8 kHz hanno sempre un numero intero di campioni in un frame, indipendentemente la durata frame o l'intervallo di connessione.
  • I frame audio devono essere anteposti da un byte sequenza. Il byte della sequenza deve contare sul wrap-around e consente alla periferica di rilevare una mancata corrispondenza o un underflow del buffer.
  • Un frame audio deve sempre rientrare in un singolo pacchetto LE. L'audio deve essere inviato come pacchetto L2CAP separato. Le dimensioni della LE La PDU LL sarà:
    dimensione payload audio + 1 (contatore di sequenze) + 6 (4 per l'intestazione L2CAP, 2 per SDU)
  • Un evento di connessione deve sempre essere abbastanza grande da contenere due audio e 2 pacchetti vuoti affinché un ACK riservi la larghezza di banda le ritrasmissioni. Tieni presente che il pacchetto audio può essere frammentato al controller Bluetooth centrale. La periferica deve poter ricevere più di 2 pacchetti audio frammentati per evento di connessione.

Per dare alla centrale una certa flessibilità, la lunghezza del pacchetto G.722 non è specificato. La lunghezza del pacchetto G.722 può cambiare in base alla connessione intervallo definito dalla centrale.

Il formato ottetto di output G.722 fa riferimento alla Rec. ITU-T G.722 (09/2012) sezione 1.4.4 " multiplexer"

Per tutti i codec supportati da una periferica, la periferica deve supportano i seguenti parametri di connessione. Questo è un elenco non esaustivo di configurazioni che la centrale può implementare.

Codec Velocità in bit Intervallo di connessione Lunghezza CE (1/2 M PHY) Dimensioni payload audio
G.722 a 16 kHz 64 kbit/s 20 ms 5000/3750 noi 160 byte

Avviare e interrompere uno stream audio

Prima di avviare uno stream audio, la centrale esegue una query sulle periferiche e stabilisce un codec per denominatore comune. Stream quindi prosegue con la seguente sequenza:

  1. PSM e, facoltativamente, RenderDelay viene letto. Questi valori può essere memorizzato nella cache dalla centrale.
  2. Il canale L2CAP del CoC è aperto: la periferica concede 8 crediti all'inizio.
  3. Viene inviato un aggiornamento della connessione per cambiare il link ai parametri richiesto per il codec scelto. La centrale potrebbe eseguire questo aggiornamento della connessione prima della connessione CoC nel passaggio precedente.
  4. Sia l'host centrale sia l'host della periferica attendono l'aggiornamento completo dell'evento.
  5. Riavvia il codificatore audio e reimposta il conteggio delle sequenze di pacchetti su 0. Un comando «Start» con i parametri pertinenti è emessa sull'AudioControlPoint. Il centralino attende una notifica dello stato corretta del comando «Start» precedente dalla periferica prima del flusso di dati. Questa attesa restituisce alla periferica per preparare la pipeline di riproduzione audio. Durante lo streaming audio, la replica dovrebbe essere disponibile a ogni evento di connessione anche se l'attuale una latenza di replica diversa da zero.
  6. La periferica prende il primo pacchetto audio dalla sua coda interna (numero di sequenza 0) e la riproduce.

La centrale emette il comando «Stop» per chiudere stream audio. Dopo questo comando, non è necessario che la periferica sia disponibile di connessione. Per riavviare lo streaming audio, segui la sequenza precedente, iniziando dal passaggio 5. Quando la centralità non è audio in streaming, dovrebbe comunque mantenere una connessione LE per GATT i servizi di machine learning.

La periferica non deve inviare un aggiornamento della connessione alla centrale. Per risparmiare energia, la centrale potrebbe eseguire un aggiornamento della connessione periferica quando non riproduce audio in streaming.