IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

[lib Udev] Notification de changement d'état de périphérique


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 43
    Points : 32
    Points
    32
    Par défaut [lib Udev] Notification de changement d'état de périphérique
    Bonjour,
    Je souhaite être notifié lors d'un changement (plug ou unplug) de device sous linux.
    Pour cela j'utilise la libUdev comme ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
     
    #include <libudev.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <locale.h>
    #include <unistd.h>
     
    int main (void)
    {
    	struct udev *udev;
    	struct udev_device *dev;
       	struct udev_monitor *mon;
     
    	// Create the udev object
    	udev = udev_new();
     
    	if (!udev)
    	{
    		printf("Can't create udev\n");
    		exit(1);
    	}
     
    	mon = udev_monitor_new_from_netlink(udev, "udev");
    	udev_monitor_filter_add_match_subsystem_devtype(mon, "usb", "usb_device");
    	udev_monitor_enable_receiving(mon);
    	while (1) 
    	{
    		dev = udev_monitor_receive_device(mon);
    		if (dev)
    		{
    			printf("Got Device\n");
    			printf("   VID/PID: %s %s\n", udev_device_get_sysattr_value(dev,"idVendor"), udev_device_get_sysattr_value(dev, "idProduct"));
    			printf("   Manuf: %s\n   Product: %s\n", udev_device_get_sysattr_value(dev,"manufacturer"), udev_device_get_sysattr_value(dev,"product"));
    			printf("   Serial: %s\n", udev_device_get_sysattr_value(dev, "serial"));
    			printf("   Node: %s\n", udev_device_get_devnode(dev));
    			printf("   Subsystem: %s\n", udev_device_get_subsystem(dev));
    			printf("   Devtype: %s\n", udev_device_get_devtype(dev));
    			printf("   Action: %s\n", udev_device_get_action(dev));
    			udev_device_unref(dev);
    		}
    		else 
    		{
    			printf("No Device from receive_device(). An error occured.\n");
    		}					
    	}
    	udev_unref(udev);
    	return 0;
    }
    Ce code tiré de "http://www.signal11.us/oss/udev/" me permet d'être notifié quand un device USB est modifié.

    J'aimerai pouvoir ajouter un filtre ou supprimer un filtre sans perdre de notification. Mais dans la doc (http://www.freedesktop.org/software/...able-receiving) dit que l'on doit ajouter les filtres avant d'"activer" le monitor.
    Pour faire cela la fonction "udev_monitor_receive_device(mon)" sera appelée dans un autre thread.

    Est ce qu'il existe un moyen de mettre a jour la liste des filtres sans risque de louper une notification?

    Merci d'avance pour vos réponse.
    ps: je ne sais pas si il faut mettre ce post dans la section linux c++ ou autre.

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Mai 2002
    Messages : 91
    Points : 55
    Points
    55
    Par défaut Trouvé!!!
    Salut,
    Est-e que tu as eu une réponse à ta question?
    De mon côté, j'aimerais aussi faire comme toi, sauf que je ne sais pas ou s'est installé la librairie libudev après install...
    Merci
    Laisse tomber, j'ai trouvé.... je vais tester ça...

Discussions similaires

  1. [Jboss5] datasource notification sur changement d'état
    Par pirvo dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 19/08/2010, 01h53
  2. [VBA-E] changement d'état d'un formulaire
    Par ooyeah dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/03/2007, 09h54
  3. [ Réseau ] Notification de Changement de route
    Par toflofr dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 22/02/2007, 14h40
  4. Réponses: 4
    Dernier message: 08/01/2007, 14h48
  5. Pourcentage de changement d'état
    Par Krispy dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 03/04/2006, 16h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo