diff --git a/client/advertising.c b/client/advertising.c
index 34e3f59..e74221f 100644
--- a/client/advertising.c
+++ b/client/advertising.c
static gboolean registered = FALSE;
static char *ad_type = NULL;
+static char **ad_uuids = NULL;
+static size_t ad_uuids_len = 0;
static void ad_release(DBusConnection *conn)
{
return TRUE;
}
+static gboolean uuids_exists(const GDBusPropertyTable *property, void *data)
+{
+ return ad_uuids_len != 0;
+}
+
+static gboolean get_uuids(const GDBusPropertyTable *property,
+ DBusMessageIter *iter, void *user_data)
+{
+ DBusMessageIter array;
+ size_t i;
+
+ dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY, "as", &array);
+
+ for (i = 0; i < ad_uuids_len; i++)
+ dbus_message_iter_append_basic(&array, DBUS_TYPE_STRING,
+ &ad_uuids[i]);
+
+ dbus_message_iter_close_container(iter, &array);
+
+ return TRUE;
+}
+
static const GDBusPropertyTable ad_props[] = {
{ "Type", "s", get_type },
+ { "ServiceUUIDs", "as", get_uuids, NULL, uuids_exists },
{ }
};
return;
}
}
+
+void ad_advertise_uuids(const char *arg)
+{
+ g_strfreev(ad_uuids);
+ ad_uuids = NULL;
+ ad_uuids_len = 0;
+
+ if (!arg || !strlen(arg))
+ return;
+
+ ad_uuids = g_strsplit(arg, " ", -1);
+ if (!ad_uuids) {
+ rl_printf("Failed to parse input\n");
+ return;
+ }
+
+ ad_uuids_len = g_strv_length(ad_uuids);
+}
diff --git a/client/main.c b/client/main.c
index 471879f..d6b52c4 100644
--- a/client/main.c
+++ b/client/main.c
return NULL;
}
+static void cmd_set_advertise_uuids(const char *arg)
+{
+ ad_advertise_uuids(arg);
+}
+
static const struct {
const char *cmd;
const char *arg;
{ "advertise", "<on/off/type>", cmd_advertise,
"Enable/disable advertising with given type",
ad_generator},
+ { "set-advertise-uuids", "[uuid1 uuid2 ...]",
+ cmd_set_advertise_uuids, "Set advertise uuids" },
{ "set-scan-filter-uuids", "[uuid1 uuid2 ...]",
cmd_set_scan_filter_uuids, "Set scan filter uuids" },
{ "set-scan-filter-rssi", "[rssi]", cmd_set_scan_filter_rssi,