Re: mesh: org.bluez.mesh.Element.MessageReceived method does not provide destination address

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Brian, Inga,

On 09/27, Gix, Brian wrote:
> > For a single MessageReceived() method, the cleanest way is to have the
> > subscription address parameter as a variant (suggested by Michal) or as
> > a dictionary.
> > An array introduces an extra consideration of byte ordering for group
> > addresses.
> 
> If variants are easy to sort in scripting languages like python3, than I
> suppose I could live with this.

Last time I checked, it was C that had issues with  any type of
'dynamic' typing, so I wouldn't worry about client languages. Handling
D-Bus variants in python is trivial.

> Or is this still a two step process of:
> 1. Determining the u16 vs u128
> 1.1 unmarshalling the correct type...
> 
> What would the signature of the method look like?

Something like this:

	void MessageReceived(uint16 source, uint16 key_index,
					 variant destination, array{byte} data)

and on the Python side, the handling would look somewhat like this
(since Python doesn't do overloading, at all):

class ElementInterface:
	def MessageReceived(source, key_index, destination, data):
	    if type(destination) == dbus.types.UINT16:
	        group_destination = destination
	    elif type(destination) == dbus.types.ARRAY:
	        virtual_destination = uuid.UUID(destination)
	    else:
	        raise DBusError('Unrecoenized destination type')

> > What I mostly about is that the represenation of the subscription
> > address in the MessageReceived() method corresponds to the
> > representation in the configuration dictionaries for the Attach() and
> > UpdateModelConfiguration() methods.

Agreed.

regards
-- 
Michał Lowas-Rzechonek <michal.lowas-rzechonek@xxxxxxxxxxx>
Silvair http://silvair.com
Jasnogórska 44, 31-358 Krakow, POLAND



[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux