API USB Port Reset

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 disposant de privilèges système est requise.

Le HAL USB est compatible avec l'API de réinitialisation du port USB, qui nécessite le HAL USB v2.0 et est disponible pour les appareils équipés d'Android 13 et versions ultérieures. Utilisez cette API pour réinitialiser la connexion USB avec l'hôte connecté.

Trouver la HAL USB et ses API

Les fabricants d'appareils doivent implémenter le HAL USB pour prendre en charge les API.

  1. Pour trouver l'implémentation par défaut de USB HAL, utilisez les chemins suivants :

    Version AIDL (dernière) : <aosp>/hardware/interfaces/usb/gadget/1.2/default/

  2. 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

  3. Pour trouver les API, utilisez le chemin suivant pour les localiser sous le fichier d'en-tête AIDL. Ce chemin d'accès est également le point d'entrée du framework Android pour l'API :

    android.hardware.usb: <aosp>/core/java/android/hardware/usb

Implémenter la couche d'abstraction du matériel USB

Pour utiliser l'API USB HAL, implémentez les éléments suivants :

  1. Corrigez la version USB HAL. Aucune implémentation de l'UI système n'est requise.

  2. HAL AIDL USB pour l'API de réinitialisation du port USB en réinitialisant la connexion USB entre l'appareil cible et l'hôte.

Comprendre l'architecture de l'API HAL USB

L'API USB HAL est intégrée au package android.hardware.usb et utilise USB HAL pour interagir avec l'appareil. Des informations sur l'architecture de l'API sont fournies dans la figure ci-dessous.

API de réinitialisation du port USB

La figure suivante illustre le flux de code de l'API USB Port Reset dans un framework, y compris l'implémentation de l'USB HAL.

Exemple de flux de code de l&#39;API de réinsertion du port USB

Figure 1.1 : Exemple de flux de code de l'API de réinsertion du port USB.

Valider votre implémentation

Chaque version USB HAL et son API correspondante sont associées à un cas de test dans la Vendor Test Suite (VTS).

API de réinitialisation du port USB

Pour trouver le cas 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).

  • Vérifiez que l'appareil testé peut se déconnecter et se reconnecter.