2020-08-12 14:47:45

by Michael N. Moran

[permalink] [raw]
Subject: Single-Segment Segmented Mesh Messages

I've been trying to wrap my head around the mesh d-bus api as described in "doc/mesh-api.txt". In particular, I'm looking at the org.bluez.mesh.Node1 interface Send() and DevKeySend() operations.

I don't see any way for a client application (Access Layer) to specify that a message that would fit into a single lower transport pdu should be sent as a single-segment message.

The motivation for this is to be able to test the reassembly capability of an actual mesh node/device.

For example, I would like to add an option to the test/test-mesh application to be able to send on/off messages using a single-segment message (if the destination element address is unicast).

As it is, it appears that the bluetooth-meshd makes the decision on its own based on the length of the upper transport layer pdu.

From the Mesh Profile v1.0 spec:

> 3.5.3.1 Segmentation
>
> [...] If the Upper Transport PDU can fit into a single Lower Transport PDU using a Segmented Message format, then the lower transport layer can use a single segmented message to transmit this Upper Transport PDU.
>
> [...] A single-segment segmented message should be used when delivery of an Upper Transport PDU can be more efficiently transmitted using a segmented message than an unsegmented message.
>
> [...] A single-segment segmented message should be used when delivery of an Upper Transport PDU can be more efficiently transmitted using a segmented message than an unsegmented message.