Qual sinal do DBus é enviado na suspensão do sistema?

4

Eu preciso detectar quando uma máquina vai dormir no Ubuntu 9.10 e no Fedora 13. Ambos usam o UPower, então eu tenho procurado o barramento DBF "org.freedesktop.UPower" para tais sinais.

Estou ouvindo o sinal "sleeping" no barramento UPower com o seguinte comando:

dbus-monitor --system "type='signal',interface='org.freedesktop.UPower',member='Sleeping'"

Quando durmo a máquina (fechando a tampa, selecionando "shutdown - > suspend" ou enviando uma mensagem DBus) não vejo um evento "sleeping".

Noto que o evento "Sleeping" é enviado quando o método "org.freedesktop.UPower.AboutToSleep" é invocado. Eu posso fazer isso manualmente chamando:

dbus-send --print-reply --system --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.AboutToSleep

E eu noto que o sinal "adormecido" é disparado. Meu entendimento é que qualquer coisa que durma no PC deve enviar o sinal "AboutToSleep" antes da mão. Não parece que isso está acontecendo. Eu tentei estas etapas no Fedora 13 e no Ubuntu 9.10 e vejo os mesmos resultados.

Alguém pode explicar o que está acontecendo ou me fornecer um sinal DBus alternativo para ouvir?

Muito obrigado,

Paul

    
por Paul Robinson 15.10.2010 / 17:07

2 respostas

2

Sua pergunta me levou a algo que funciona aqui:

> annotate-output dbus-monitor --system "type='signal',interface='org.freedesktop.UPower'"
08:07:00 I: Started dbus-monitor --system type='signal',interface='org.freedesktop.UPower'
08:07:00 O: signal sender=org.freedesktop.DBus -> dest=:1.145 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
08:07:00 O: string ":1.145"
08:07:22 O: signal sender=:1.20 -> dest=(null destination) serial=189 path=/org/freedesktop/UPower; interface=org.freedesktop.UPower; member=Sleeping
08:07:41 O: signal sender=:1.20 -> dest=(null destination) serial=190 path=/org/freedesktop/UPower; interface=org.freedesktop.UPower; member=Resuming
08:08:10 O: signal sender=:1.20 -> dest=(null destination) serial=192 path=/org/freedesktop/UPower; interface=org.freedesktop.UPower; member=Sleeping
08:10:08 O: signal sender=:1.20 -> dest=(null destination) serial=193 path=/org/freedesktop/UPower; interface=org.freedesktop.UPower; member=Resuming

Então, como você pode ver, recebi os sinais que parece estar faltando. @ 08: 07: 22 Eu suspendi a máquina, @ 08: 07: 41 eu comecei de novo. @ 08: 08: 10 Eu hibernou, e @ 08: 10: 08 foi reiniciado novamente. Funciona sem falhas aqui. Eu tentei adicionar ,member='Sleeping' como no seu post, e isso funcionou também (só me deu os eventos Sleeping).

BTW, gosto muito de anotar as saídas

    
por 18.10.2011 / 08:25
1

Sob o Fedora14 eu uso o mesmo comando dbus-monitor --sistema "type = 'signal', interface = 'org.freedesktop.UPower'" pode monitorar o sinal com sinal de suspensão. Verifique sua configuração UPower.

    
por 09.12.2010 / 03:14