Subject: bug#43252: 27.1; DBus properties lack type hints or overrides

From: Hugh Daschbach <[email-masked]>
Date: Tue, 08 Sep 2020 21:10:06 -0700

Michael Albinus writes:

> Hugh Daschbach <[email-masked]> writes:
>
> Hi Hugh,
>
> I've pushed a fix to master, which shall solve the 
> problem. Playing with
> introspection, I found the problem that it stalls if there are 
> no
> introspection data. Not applicable. So I've turned to the 
> alternative
> approach, allowing type symbols in `dbus-set-property' and
> `dbus-register-property'. You could call now
>
> (dbus-register-property :session "org.gnu.Emacs" "/node1"
>  "org.bluez.GattService1" "Device" :readwrite
>  :object-path "/path/node1")
>
> Similar in `dbus-set-property'. Documentation is adapted, 
> dbus-tests.el
> extended accordingly.

Thanks, Michael.  I think I still have issues.

The attached script generates two boolean properties, then issues 
a
GetManagedObjects method call.  The two properties are not 
returned,
though they are in the registered objects table.

The script also drops an elisp ‘dbus-get-all-managed-objects’ 
request in
the *scratch* buffer.  If I execute that, I get a similar failure 
to
#43251.  That may not be surprising.

I’m working an a more comprehensive test that registers the 
variety of
types I need to support.  I’ll post that when I have something 
worth
looking at.  I’d like to present that in a form compatible with
dbus-test.el rather than throw more one off scripts at you.  So 
give me
a bit.

I think the mechanism you implemented works well for simple types. 
Is
there a mechanism to specify the signature for an empty compound 
type?
I need arrays and dictionaries of various types.

For something like a byte array, I expect I’ll need to interleave 
the
:byte type between each value in the array.  Correct?

Thanks,
Hugh