Je suis en train d'ecrire un driver de modem adsl usb pour MacOS X. J'ai bien avance et tout semble fonctionner sauf lors d'un reveil du systeme apres une mise en veille.
En effet, lors d'un reveil systeme, le driver peut envoyer des donnees mais le pipe d'entree usb semble bloque.
Pour le transfert de donnees, j'utilise un bulk pipe en entree et un en sortie.
Lors du reveil, le pipe d'entree (In) est bien sur Read(), mais la fonctiion de completion n'est jamais lancee. Elle n'est lancee que si je decharge mon extension avec kextunload. Dans ce dernier cas, elle renvoie une erreur qui dit que le device n'est pas trouve.
Pourquoi ce pipe ne recois plus les donnees du modem apres le reveil du Mac?
Est-ce un probleme de power management? Dois-je implementer une methode de power management?
J'ai essayer de faire un Reset() ou un ClearPipeStall() sur ce pipe, mais rien ne semble fonctionner, il reste bloque sur le read sans jamais rien recevoir...
Quelqu'un peut-il m'expliquer a quoi servent exactement les fonctions Reset() et ClearPipeStall() ?
En effet, lors d'un reveil systeme, le driver peut envoyer des donnees mais le pipe d'entree usb semble bloque.
Pour le transfert de donnees, j'utilise un bulk pipe en entree et un en sortie.
Lors du reveil, le pipe d'entree (In) est bien sur Read(), mais la fonctiion de completion n'est jamais lancee. Elle n'est lancee que si je decharge mon extension avec kextunload. Dans ce dernier cas, elle renvoie une erreur qui dit que le device n'est pas trouve.
Pourquoi ce pipe ne recois plus les donnees du modem apres le reveil du Mac?
Est-ce un probleme de power management? Dois-je implementer une methode de power management?
J'ai essayer de faire un Reset() ou un ClearPipeStall() sur ce pipe, mais rien ne semble fonctionner, il reste bloque sur le read sans jamais rien recevoir...
Quelqu'un peut-il m'expliquer a quoi servent exactement les fonctions Reset() et ClearPipeStall() ?