return l_dbus_message_new_method_return(message);
}
+static void append_dict_entry_basic(struct l_dbus_message_builder *builder,
+ const char *key, const char *signature,
+ const void *data)
+{
+ if (!builder)
+ return;
+
+ l_dbus_message_builder_enter_dict(builder, "sv");
+ l_dbus_message_builder_append_basic(builder, 's', key);
+ l_dbus_message_builder_enter_variant(builder, signature);
+ l_dbus_message_builder_append_basic(builder, signature[0], data);
+ l_dbus_message_builder_leave_variant(builder);
+ l_dbus_message_builder_leave_dict(builder);
+}
+
static void __bt_hal_mesh_foreach_model_getter(gpointer data,
gpointer user_data)
{
struct l_dbus_message_builder *builder = (struct l_dbus_message_builder *) user_data;
meshcfg_model *model_info = (meshcfg_model*) data;
+ bool pub_enable = false;
+ bool sub_enable = false;
+ l_dbus_message_builder_enter_struct(builder, "qa{sv}");
l_dbus_message_builder_append_basic(builder, 'q', &model_info->model);
+ l_dbus_message_builder_enter_array(builder, "{sv}");
+ append_dict_entry_basic(builder, "Subscribe", "b", &sub_enable);
+ append_dict_entry_basic(builder, "Publish", "b", &pub_enable);
+ l_dbus_message_builder_leave_array(builder);
+ l_dbus_message_builder_leave_struct(builder);
}
static bool __mesh_model_getter(struct l_dbus *dbus,
{
meshcfg_el *element = (meshcfg_el*) user_data;
- l_dbus_message_builder_enter_array(builder, "q");
+ l_dbus_message_builder_enter_array(builder, "(qa{sv})");
g_slist_foreach(element->models,
__bt_hal_mesh_foreach_model_getter, builder);
struct l_dbus_message_builder *builder,
void *user_data)
{
- l_dbus_message_builder_enter_array(builder, "(qq)");
+ l_dbus_message_builder_enter_array(builder, "(qqa{sv})");
l_dbus_message_builder_leave_array(builder);
return true;
/* Properties */
l_dbus_interface_property(iface, "Index", 0, "y", __mesh_element_index_getter,
NULL);
- l_dbus_interface_property(iface, "VendorModels", 0, "a(qq)",
+ l_dbus_interface_property(iface, "VendorModels", 0, "a(qqa{sv})",
__mesh_vendor_model_getter, NULL);
- l_dbus_interface_property(iface, "Models", 0, "aq", __mesh_model_getter, NULL);
+ l_dbus_interface_property(iface, "Models", 0, "a(qa{sv})", __mesh_model_getter,
+ NULL);
/* Methods */
l_dbus_interface_method(iface, "DevKeyMessageReceived", 0,
l_free(net_uuid);
}
-static void append_dict_entry_basic(struct l_dbus_message_builder *builder,
- const char *key, const char *signature,
- const void *data)
-{
- if (!builder)
- return;
-
- l_dbus_message_builder_enter_dict(builder, "sv");
- l_dbus_message_builder_append_basic(builder, 's', key);
- l_dbus_message_builder_enter_variant(builder, signature);
- l_dbus_message_builder_append_basic(builder, signature[0], data);
- l_dbus_message_builder_leave_variant(builder);
- l_dbus_message_builder_leave_dict(builder);
-}
-
static void __mesh_scan_setup(struct l_dbus_message *msg, void *user_data)
{
struct l_dbus_message_builder *builder;