summaryrefslogtreecommitdiff
path: root/mesh/model.c
diff options
context:
space:
mode:
authorMichaƂ Lowas-Rzechonek <michal.lowas-rzechonek@silvair.com>2019-11-26 15:54:00 +0100
committerBrian Gix <brian.gix@intel.com>2019-11-26 10:56:44 -0800
commit676c91d05530cfd4ef2b943e750a63482fcd730e (patch)
tree2aee596f3a6ad67f8302542fc0027f92bf82fe6d /mesh/model.c
parenta73cdc09c0b2092a7911ef30b343c98ec64b7f94 (diff)
downloadbluez-676c91d05530cfd4ef2b943e750a63482fcd730e.tar.gz
mesh: Provide destination address in MessageReceived API
Diffstat (limited to 'mesh/model.c')
-rw-r--r--mesh/model.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/mesh/model.c b/mesh/model.c
index de271f171..a0c683691 100644
--- a/mesh/model.c
+++ b/mesh/model.c
@@ -823,8 +823,10 @@ static void send_dev_key_msg_rcvd(struct mesh_node *node, uint8_t ele_idx,
l_dbus_send(dbus, msg);
}
-static void send_msg_rcvd(struct mesh_node *node, uint8_t ele_idx, bool is_sub,
- uint16_t src, uint16_t app_idx,
+static void send_msg_rcvd(struct mesh_node *node, uint8_t ele_idx,
+ uint16_t src, uint16_t dst,
+ const struct mesh_virtual *virt,
+ uint16_t app_idx,
uint16_t size, const uint8_t *data)
{
struct l_dbus *dbus = dbus_get_bus();
@@ -847,7 +849,17 @@ static void send_msg_rcvd(struct mesh_node *node, uint8_t ele_idx, bool is_sub,
l_dbus_message_builder_append_basic(builder, 'q', &src);
l_dbus_message_builder_append_basic(builder, 'q', &app_idx);
- l_dbus_message_builder_append_basic(builder, 'b', &is_sub);
+
+ if (virt) {
+ l_dbus_message_builder_enter_variant(builder, "ay");
+ dbus_append_byte_array(builder, virt->label,
+ sizeof(virt->label));
+ l_dbus_message_builder_leave_variant(builder);
+ } else {
+ l_dbus_message_builder_enter_variant(builder, "q");
+ l_dbus_message_builder_append_basic(builder, 'q', &dst);
+ l_dbus_message_builder_leave_variant(builder);
+ }
dbus_append_byte_array(builder, data, size);
@@ -986,7 +998,7 @@ bool mesh_model_rx(struct mesh_node *node, bool szmict, uint32_t seq0,
*/
if (forward.has_dst && !forward.done) {
if ((decrypt_idx & APP_IDX_MASK) == decrypt_idx)
- send_msg_rcvd(node, i, is_subscription, src,
+ send_msg_rcvd(node, i, src, dst, decrypt_virt,
forward.app_idx, forward.size,
forward.data);
else if (decrypt_idx == APP_IDX_DEV_REMOTE ||