Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique explique comment implémenter Wake-on-Touch avec un mini-pilote HID personnalisé.
Arrière-plan : Stratégie d’alimentation HIDClass pour Wake-On-Touch
Le diagramme d’état suivant illustre les états logiques où le périphérique d’entrée sera placé lorsqu’il prend en charge la stratégie d’alimentation Wake-on-Touch.
Remarques :
- Dx = DEVICE_CAPABILITIES. DeviceWake
- L’intervalle du minuteur d’inactivité est de 1 seconde
Comment activer Wake-on-Touch
- Choisissez l’état D pour Wake-on-Touch et implémentez le mini-pilote HID personnalisé avec les conseils de la section « CHoose D-State for Wake-on-Touch » ci-dessous pour obtenir des conseils.
- Créez un INF pour accepter la stratégie Wake-on-Touch conformément à la section « Exigences INF ».
- Vérifiez que l’appareil se réveille sur les mouvements tactiles appropriés, en fonction des exigences OEM et/ou du facteur de forme de l’appareil. Vérifiez également qu'il ne provoque pas d'événements de réveil parasites et que la consommation d'énergie résultant de l'activation de la fonctionnalité est acceptable. Consultez le Guide de validation Wake-on-Touch.
Choisir L’état D pour Wake-on-Touch
Pour le mini-pilote HID personnalisé, le diagramme suivant montre comment choisir entre D2 et D3. En supposant que le contrôleur tactile a besoin de la source d’alimentation de l’appareil main dans son mode Wake-on-Touch, lorsque D3Cold est pris en charge, D2 est recommandé pour Wake-on-Touch, car D3Hot peut être suivi de D3Cold où Wake-on-Touch n’est pas possible.
Exigences INF
La stratégie d'alimentation HIDClass Wake-on-Touch n'est pas activée par défaut.
Pour les contrôleurs tactiles qui utilisent des mini-pilotes HID personnalisés et des INFs, les fabricants OEM/IVS doivent créer un INF et ajouter ce qui suit à sa section DDInstall.HW pour accepter la stratégie Wake-on-Touch.
Include = input.inf
Needs = WakeScreenOnTouch.HW
Si l’appareil a choisi une autre stratégie HID en conflit avec la stratégie Wake-on-Touch, l’une ou l’autre des stratégies est ignorée.
Si l’appareil possède plusieurs collections IHM, notamment des collections d’écran tactile (UsagePage:0xD, Usage:0x4) et des collections d’écrans non tactiles, le microprogramme tactile doit uniquement prendre en charge le réveil des collections d’écran tactiles. Si une collection non tactile peut également signaler le réveil, le périphérique sera toujours ramené à D0 pour épuiser l'alimentation.
Présentation de l’activation ou de la désactivation de la veille tactile
Dans les scénarios Wake-on-Touch, HIDClass demande IRP_MN_WAIT_WAKE d’armer l’appareil pour le wake avant de demander D-IRP pour mettre le périphérique tactile hors tension. Dans le scénario Device-Not-In-Use, HIDClass demande directement D-IRP pour mettre hors tension l’appareil tactile sans demander d’abord IRP_MN_WAIT_WAKE.
- Si la solution personnalisée utilise D2 pour wake-on-touch et D3 pour l’appareil non utilisé, elle peut simplement s’appuyer sur L’état D dans le D-IRP pour différencier deux scénarios et activer uniquement Wake-on-Touch sur D2.
- Si la solution personnalisée utilise D3 dans les deux scénarios, elle doit s’appuyer sur la présence de IRP_MN_WAIT_WAKE pour différencier deux scénarios et activer Wake-on-Touch lors de l’obtention d’une requête D3 après IRP_MN_WAIT_WAKE.
Il est recommandé que le mini-pilote HID personnalisé ne s’appuie pas sur d’autres notifications système telles que GUID_MONITOR_POWER_ON, car cela peut entraîner des problèmes de minutage avec les IRP_MN_WAIT_WAKE et D2/D3 demandés par HIDClass.
Notification de réinitialisation de l’appareil
Il ne s’agit pas d’une exigence spécifique à Wake-on-Touch, mais d’une exigence générale pour les mini-pilotes HID. Le mini-pilote HID personnalisé est chargé d’effectuer IOCTL_HID_DEVICERESET_NOTIFICATION chaque fois qu’il réalise la perte d’état de l’appareil et la nécessité de la réinitialisation de l’appareil. Cela peut être implémenté dans le gestionnaire de réinitialisation lancé par l’appareil, ou dans la routine D0Entry du pilote, par exemple après qu’il a détecté le cv de D3Cold.