Google si impegna a promuovere l'equità razziale per le comunità nere. Vedi come.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Implementazione di USB HAL

La versione di Android 8.0 sposta la gestione dei comandi USB da script init a un demone USB nativo per una migliore configurazione e affidabilità del codice. Per la configurazione della funzione gadget, gli script init (trigger di proprietà) vengono utilizzati per eseguire operazioni su gadget specifiche del dispositivo.

Nelle versioni precedenti, queste configurazioni specifiche del dispositivo erano state ottenute tramite script di init specifici del dispositivo (utilizzando i trigger di proprietà). Passare a un design HAL (Hardware Abstraction Layer) porta a un'implementazione molto più pulita che risolve questi problemi:

  1. Operazioni come le scritture sui nodi sysfs del kernel potrebbero non riuscire ma non essere propagate al codice dei framework che imposta il trigger di proprietà. Di conseguenza, i framework presumono erroneamente che le operazioni abbiano avuto esito positivo anche se non sono state eseguite correttamente.
  2. init script init hanno un numero limitato di operazioni che potrebbero essere eseguite.

HAL e Treble

Gli script di init specifici del dispositivo sono stati utilizzati come sostituzione dei livelli HAL per eseguire operazioni USB specifiche del dispositivo. USB (tramite ADB) è un'interfaccia principale per i problemi di sistema di debug. Avere un demone nativo per eseguire la configurazione USB elimina la dipendenza dal codice del framework, quindi anche se il framework va in crash USB dovrebbe essere in esecuzione.

Con il modello Treble introdotto anche in Android 8.0, tutti gli HAL sono isolati dai servizi di sistema e devono essere eseguiti nei propri demoni nativi. Ciò elimina la necessità di disporre di un demone USB esclusivo poiché il livello HAL funge anche da demone USB.

L'implementazione HAL predefinita si occupa di tutti i dispositivi pre-Android 8.0. Pertanto, non ci sarebbe alcun lavoro specifico del dispositivo per i dispositivi pre-Android 8.0. Android 8.0 utilizza l'interfaccia HAL per eseguire una query sullo stato delle porte USB e per eseguire scambi di ruoli dati e ruolo di alimentazione.

Implementazione

La nuova interfaccia USB HAL deve essere implementata su ogni dispositivo che si avvia su Android 8.0. L'implementazione predefinita dovrebbe occuparsi dei dispositivi pre-Android 8.0. L'implementazione predefinita è sufficiente se il dispositivo utilizza la classe dual_role_usb per segnalare lo stato della porta di tipo c. Potrebbero essere necessarie modifiche sostanziali negli script USB specifici del dispositivo per trasferire la proprietà dei nodi typc-c al sistema.