Pour prendre en charge l'API USB Hardware Abstraction Layer (HAL), les fabricants d'appareils doivent implémenter la version USB HAL correspondante. Pour utiliser l'API USB HAL, une application privilégiée par le système est requise.
L'USB HAL prend en charge l'API USB Port Reset, qui nécessite USB HAL v2.0 et est disponible pour les appareils exécutant Android 13 et versions ultérieures. Utilisez cette API pour réinitialiser la connexion USB avec l'hôte connecté.
Trouver l'USB HAL et ses API
Les fabricants d'appareils doivent implémenter USB HAL pour prendre en charge les API.
Pour trouver l'implémentation par défaut d'USB HAL, utilisez les chemins suivants :
Version AIDL (dernière) :
<aosp>/hardware/interfaces/usb/gadget/1.2/default/
Pour trouver le fichier d'en-tête de l'interface matérielle, utilisez le chemin suivant :
Version AIDL (dernière) :
<aosp>/hardware/interfaces/usb/gadget/1.2/IUsbGadget.hal
Pour rechercher les API, utilisez le chemin suivant pour localiser les API sous le fichier d'en-tête AIDL. Ce chemin est également le point d’entrée du framework Android pour l’API :
android.hardware.usb
:<aosp>/core/java/android/hardware/usb
Implémenter le HAL USB
Pour travailler avec l'API USB HAL, implémentez :
Corrigez la version USB HAL. Aucune implémentation de l’interface utilisateur du système n’est requise.
USB AIDL HAL pour l'API de réinitialisation du port USB en réinitialisant la connexion USB entre le périphérique cible et l'hôte.
Comprendre l'architecture de l'API USB HAL
L'API USB HAL est intégrée au package android.hardware.usb
et exploite l'USB HAL pour interagir avec l'appareil. Les détails sur l'architecture de l'API sont fournis dans la figure ci-dessous.
API de réinitialisation du port USB
La figure suivante illustre le flux de code de l'API de réinitialisation du port USB dans un cadre, y compris l'implémentation de l'USB HAL.
Figure 1.1 Exemple de flux de code API de réinitialisation du port USB.
Validez votre implémentation
Chaque version USB HAL et son API correspondante sont associées à un scénario de test dans Vendor Test Suite (VTS).
API de réinitialisation du port USB
Pour trouver le scénario de test VTS pour l'API de réinitialisation du port USB, accédez à :
<aosp>/test/vts-testcase/hal/usb/gadget/V1_2/
Le scénario de test VTS pour USB HAL v1.2 est un scénario de test côté hôte que vous pouvez utiliser pour effectuer ces actions.
Pour appeler l'API de réinitialisation du port USB, utilisez la commande
adb shell
(#svc usb resetUsbPort
).Confirmez que l'appareil testé (DUT) peut se déconnecter et se reconnecter.