Bonjour à tous! Je suis sur un driver pour caméras usb, sauf qu'en attente du matériel, j'essaye de prévoir le fonctionnement du transfert isochrone. Le truc, c'est que mes caméras envoient une image (pas un streaming), a coup de frames (une frame étant : 2 bytes de flag, 3 bytes d'adresse dans l'image et 600 bytes de données).
j'ai donc créé un module linux me servant d'interface avec le matériel (je me suis inspiré de usb-skeleton.c) mais j'en arrive au transfert isochrone.
Je me demandais s'il était nécessaire de gérer le transfert d'une image par un thread ou si on pouvait éviter. En effet, lorsque je soumets l'urb, la fonction submit_urb n'est pas blocante. Du coup, si l'utilisateur appelle l'ioctl encapsulant la soumission de l'urb, ben ca sort direct.
Je me demande donc si je peux par exemple créer une ioctl qui permet de tester l'état de la soumission ... auquel cas l'utilisateur appellerai l'ioctl de soumission d'urb puis ferait une boucle demandant l'état de la soumission ... est-ce envisageable ?
Je me demande aussi à quoi sert la structure wait_queue_head_t que je vois dans certains exemples de code. Est-ce lié à mon problème ou pas ? C'est notamment l'appel à la fonction wake_up_interruptible, dans la fonction de completion de l'urb, qui me fait soupsonner une nécessité d'utiliser cette structure ...
Ce transfert isochrone m'a l'air plutot pas évident à gérer ! Tout exemple de code (partie module ET partie utilisateur) me serait vraiment d'une grande aide. Merci d'avance à tous.
Stéphane