[C] DBus et Hal

DBus et Hal [C] - C - Programmation

Marsh Posté le 03-05-2007 à 13:36:01    

Bonjour  :hello:  
 
J'essaye depuis un moment communiquer avec Hal par l'intermédiaire de Dbus. Malheuresement je rencontre toujours le meme probleme:

Citation :

Error: The name org.freedesktop.Hal was not provided by any .service files


 
Cela est clair, d'ailleurs si j'utilise le code de la doc de dbus, je n'ai pas de Hal qui apparait dans la lsite des services.


 
Seulement j'ai des programmes utilisant DBus et Hal qui fonctionne, enfin d'apres le code je suppose qu'ils utilisent dbus et hal. Le probleme est que le code n'est pas facile a comprend car les types sont renommés ... Je trouve peu de doc pour Dbus et le langage C (et encore moins pour Dbus + Hal).
 
J'aimerais donc savoir si vous auriez des liens ou bien du source me permettant de comprendre ou je commet mon erreur.
 
Voici le code que j'utilise et qui me renvoie une erreur comme quoi Hal n'est pas present dans les service (il s'agit du code du tuto officiel légerement modifié, il n'est pas completement adapté a Hal je sais).
 

Code :
  1. #define E_HAL_SENDER "org.freedesktop.Hal"
  2. #define E_HAL_MANAGER_PATH "/org/freedesktop/Hal/Manager"
  3. #define E_HAL_MANAGER_INTERFACE "org.freedesktop.Hal.Manager"
  4. int main (int argc, char **argv)
  5. {
  6.         DBusGConnection *connection;
  7.         GError *error;
  8.         DBusGProxy *proxy;
  9.         char **name_list;
  10.         char **name_list_ptr;
  11.         g_type_init ();
  12.         error = NULL;
  13.         connection = dbus_g_bus_get (DBUS_BUS_SESSION,
  14.                         &error);
  15.         if (connection == NULL)
  16.         {
  17.                 g_printerr ("Failed to open connection to bus: %s\n",
  18.                                 error->message);
  19.                 g_error_free (error);
  20.                 exit (1);
  21.         }
  22.         /* Create a proxy object for the "bus driver" (name "org.freedesktop.DBus" ) */
  23.         proxy = dbus_g_proxy_new_for_name (connection,
  24.                         E_HAL_SENDER,
  25.                         E_HAL_MANAGER_PATH,
  26.                         E_HAL_MANAGER_INTERFACE);
  27.                         //DBUS_SERVICE_DBUS,
  28.                         //DBUS_PATH_DBUS,
  29.                         //DBUS_INTERFACE_DBUS);
  30.         /* Call ListNames method, wait for reply */
  31.         error = NULL;
  32.         if (!dbus_g_proxy_call (proxy, "ListNames", &error, G_TYPE_INVALID,
  33.                                 G_TYPE_STRV, &name_list, G_TYPE_INVALID))
  34.         {
  35.                 /* Just do demonstrate remote exceptions versus regular GError */
  36.                 if (error->domain == DBUS_GERROR && error->code == DBUS_GERROR_REMOTE_EXCEPTION)
  37.                         g_printerr ("Caught remote method exception %s: %s",
  38.                                         dbus_g_error_get_name (error),
  39.                                         error->message);
  40.                 else
  41.                         g_printerr ("Error: %s\n", error->message);
  42.                 g_error_free (error);
  43.                 return 0;
  44.         }
  45.         /* Print the results */
  46.         g_print ("Names on the message bus:\n" );
  47.         for (name_list_ptr = name_list; *name_list_ptr; name_list_ptr++)
  48.         {
  49.                 g_print ("  %s\n", *name_list_ptr);
  50.         }
  51.         g_strfreev (name_list);
  52.         g_object_unref (proxy);
  53.         return 1;
  54. }


 
 
merci d'avance ;)

Reply

Marsh Posté le 03-05-2007 à 13:36:01   

Reply

Marsh Posté le 03-05-2007 à 19:59:49    

J'ai fini par trouver, en faite Hal se trouve sur le dbus systeme et non le dbus session ^^

Reply

Marsh Posté le 04-05-2007 à 23:06:15    

ffomnislash a écrit :

J'ai fini par trouver, en faite Hal se trouve sur le dbus systeme et non le dbus session ^^

Ah bon, je croyais qu'il était dans le Discovery  :whistle:  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed