Forum Linux.débutant Communication USB avec la lib udev

Posté par . Licence CC by-sa
Tags : aucun
1
20
avr.
2015

Bonjour à tous,

J'ai réussi à détecter mon matériel par un port USB à l'aide la lib udev sous Linux.

En utilisant la fonction :

udev_monitor_filter_add_match_subsystem_devtype (struct udev_monitor *udev_monitor,
                                                 const char *subsystem,
                                                 const char *devtype);

Le souci c'est que je ne sais pas à quoi correspond "subsystem" et "devtype". J'aimerais mettre un filtre seulement pour le matériel que j'utilise et non pour tous les périphériques USB (avec "subsystem" = "usb" et "devtype" = "usb_device").

Je pensais sinon utiliser la fonction :

udev_monitor_filter_add_match_tag (struct udev_monitor *udev_monitor,
                                   const char *tag);

J'ai cherché à quoi pouvait correspondre tag mais je n'ai pas eu de réponse bien précise.

Merci d'avance

  • # Doc d'udev

    Posté par . Évalué à 1.

    As-tu pensé à regarder du côté de cette documentation : http://doc.ubuntu-fr.org/udev

    C'est plutôt bien foutu, et ça explique assez simplement les concepts d'udev du genre subsystem et devtype ;-)

    En particulier regarde du côté de la commande udevadm qui devrait te donner le subsystem et le devtype de ton périphérique

    Bonne lecture!

    • [^] # Re: Doc d'udev

      Posté par . Évalué à 1.

      Oui j'ai lu cette page mais pas entièrement.

      L'outil udevadm est bien utile.

      Je connais déjà le subsystem et le devtype de mon appareil grâce à un programme, je cherche plutôt à mettre un TAG ou alors créer un groupe dans le .rules afin de noter plusieurs périphériques particuliers dont j'aimerais noter les caractéristiques dans mon interface.

      Pour le TAG j'ai :
      udev_monitor_filter_add_match_tag (struct udev_monitor *udev_monitor, const char *tag);

      Pour Subsystem et Devtype j'ai :
      udev_monitor_filter_add_match_subsystem_devtype (struct udev_monitor *udev_monitor, const char *subsystem, const char *devtype);

      Avec d'autres paramètres je ne peux rien faire. Comme ajouter un groupe je ne sais pas si ça va changer Devtype par exemple…

      Voila le lien de la libudev : libudev

    • [^] # Re: Doc d'udev

      Posté par . Évalué à 1.

      Je pensais peut être qu'avec la description suivante, que je puisse utiliser la fonction udev_monitor_filter_add_match_tag(struct udev_monitor *udev_monitor, const char *tag);

      TAG : Attach a tag to a device. This is used to filter events for users of libudev's monitor functionality, or to enumerate a group of tagged devices. The implementation can only work efficiently if only a few tags are attached to a device. It is only meant to be used in contexts with specific device filter requirements, and not as a general-purpose flag. Excessive use might result in inefficient event handling.

      Par contre, j'aurais dit comme ceci la syntaxe mais je ne suis pas sur :

      ATTRS{idVendor}=="", ATTRS{idProduct}=="", SYMLINK+="", TAG:="essai", MODE:=""

      Liens :
      LibUdev
      Syntaxe_rules

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.