Eu preciso enviar uma chamada de método com DBus do shell
quando eu envio este código do shell:
dbus-send --print-reply --system --type=method_call \
--dest=vehicle.network.service /Diag \
vehicle.network.service.Diag.setVariantCoding
Recebi esta resposta:
Erro org.freedesktop.DBus.Error.InvalidArgs: tipo de mensagem, '()', não corresponde ao tipo esperado '(uay)'
como posso fazer o tipo de mensagem como (uay)?
eu sei que é 6 bytes de comprimento.
O tipo é determinado automaticamente a partir dos argumentos (parâmetros) que você fornece.
(uay)
significa que você precisa fornecer um uint32 (u
) e uma matriz de bytes (ay
) para esse método específico. (A especificação D-Bus explica o significado da notação de tipo.)Por exemplo, se você quiser chamar
setVariantCoding(12345, "\xAB\xCD\xEF")
, use:Com
gdbus
:Com
busctl
:(No busctl, o comprimento do array é especificado explicitamente, usando
3
neste exemplo.)