Mdbus

De openmoko-fr.

mdbus permet d'explorer et d'interagir avec les objets exposés via DBus dans le framework openmoko

Sommaire

Concepts

Usage

debian-gta02:~# mdbus -h
Usage: /usr/bin/mdbus [-s] [-l] [ busname [ objectpath [ methodname [ parameters... ] ] ] ]

Liste des bus

Sans arguments, l'appel à mdbus liste les bus disponibles. Il faut spécifier l'option -s pour voir l'ensemble des bus. Sinon seuls les bus liés à la session graphique sont listés (si vous vous connectez par ssh vous ne disposez pas de session graphique voire la section Messages d'erreur) :

debian-gta02:~# mdbus   
:1.0
:1.1
:1.14
:1.2
:1.3
org.freedesktop.DBus
org.freedesktop.Notifications
org.xfce.FileManager
org.xfce.Thunar

debian-gta02:~# mdbus -s
:1.0
:1.1
:1.2
:1.3
:1.4
:1.5
:1.50
:1.6
:1.8
:1.9
org.bluez
org.freedesktop.DBus
org.freedesktop.Gypsy
org.freesmartphone.frameworkd
org.freesmartphone.odeviced
org.freesmartphone.oeventsd
org.freesmartphone.ogpsd
org.freesmartphone.ogsmd
org.freesmartphone.ophoned
org.freesmartphone.opreferencesd
org.freesmartphone.ousaged
org.pyneo.muxer

Objets d'un bus

En ajoutant le nom du bus à la commande on obtient la liste des objets qu'il expose :

debian-gta02:~# mdbus -s org.freesmartphone.frameworkd
/
/org
/org/freedesktop
/org/freedesktop/Gypsy
/org/freesmartphone
/org/freesmartphone/Device
/org/freesmartphone/Device/Audio
/org/freesmartphone/Device/Display
/org/freesmartphone/Device/Display/pcf50633_bl
/org/freesmartphone/Device/IdleNotifier
/org/freesmartphone/Device/IdleNotifier/0
/org/freesmartphone/Device/Info
/org/freesmartphone/Device/Input
/org/freesmartphone/Device/LED
/org/freesmartphone/Device/LED/gta02_aux_red
/org/freesmartphone/Device/LED/gta02_power_blue
/org/freesmartphone/Device/LED/gta02_power_orange
/org/freesmartphone/Device/LED/neo1973_vibrator
/org/freesmartphone/Device/PowerControl
/org/freesmartphone/Device/PowerControl/Bluetooth
/org/freesmartphone/Device/PowerControl/UsbHost
/org/freesmartphone/Device/PowerControl/WiFi
/org/freesmartphone/Device/PowerSupply
/org/freesmartphone/Device/PowerSupply/apm
/org/freesmartphone/Device/PowerSupply/bat
/org/freesmartphone/Device/RealTimeClock
/org/freesmartphone/Device/RealTimeClock/rtc0
/org/freesmartphone/Events
/org/freesmartphone/Framework
/org/freesmartphone/GSM
/org/freesmartphone/GSM/Device
/org/freesmartphone/GSM/Server
/org/freesmartphone/Phone
/org/freesmartphone/Preferences
/org/freesmartphone/Preferences/phone
/org/freesmartphone/Preferences/rules
/org/freesmartphone/Time
/org/freesmartphone/Time/Alarm
/org/freesmartphone/Usage

Interface d'un objet

Il suffit d'ajouter le nom d'un objet pour obtenir une description de son interface (méthodes et signaux) :

debian-gta02:~# mdbus -s org.freesmartphone.frameworkd /org/freesmartphone/Device/IdleNotifier/0
[METHOD]    org.freedesktop.DBus.Introspectable.Introspect()
[METHOD]    org.freesmartphone.Device.IdleNotifier.GetState()
[METHOD]    org.freesmartphone.Device.IdleNotifier.GetTimeouts()
[METHOD]    org.freesmartphone.Device.IdleNotifier.SetState( s:state )
[METHOD]    org.freesmartphone.Device.IdleNotifier.SetTimeout( s:state, i:timeout )
[SIGNAL]    org.freesmartphone.Device.IdleNotifier.State( s:state )

Appel d'une méthode

Enfin, pour utiliser une méthode on l'ajoute à la ligne de commande, suivie de ses éventuels paramètres :

debian-gta02:~# mdbus -s org.freesmartphone.frameworkd /org/freesmartphone/Device/IdleNotifier/0 org.freesmartphone.Device.IdleNotifier.GetState
/org/freesmartphone/Device/IdleNotifier/0: GetState ->  idle

debian-gta02:~# mdbus -s org.freesmartphone.frameworkd /org/freesmartphone/Device/IdleNotifier/0 org.freesmartphone.Device.IdleNotifier.SetState busy
/org/freesmartphone/Device/IdleNotifier/0: SetState -> 
debian-gta02:~# mdbus -s org.freesmartphone.frameworkd /org/freesmartphone/Device/IdleNotifier/0 org.freesmartphone.Device.IdleNotifier.GetState
/org/freesmartphone/Device/IdleNotifier/0: GetState ->  busy

Messages d'erreur

Simples messages de Warning peux important root@om-gta02:~# mdbus -s Using **pending_return in dbus_connection_send_with_reply_setup() without pending_setup is deprecated and strongly discouraged

Exemples

Envoyer un SMS

mdbus -s org.freesmartphone.ogsmd /org/freesmartphone/GSM/Device org.freesmartphone.GSM.SMS.SendMessage u\"+33600000000\" "C'est la fete mon gars\n On s'appelle demain\nSalut !" {}

Commencer un appel

mdbus -s org.freesmartphone.ogsmd /org/freesmartphone/GSM/Device org.freesmartphone.GSM.Call.Initiate u\"+33100000000\" u\"voice\"