summaryrefslogtreecommitdiff
path: root/client/advertising.c
diff options
context:
space:
mode:
authorERAMOTO Masaya <eramoto.masaya@jp.fujitsu.com>2018-02-16 14:51:37 +0900
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2018-02-19 12:21:11 +0200
commit4d04b9f573e586ba68ea5ba205b86883b1b34d1d (patch)
tree6bd9d276c53777925d9d8dd49a0aa7575848adc3 /client/advertising.c
parentf0fccd6f4d4bc89771d16c44951e21092f57f121 (diff)
downloadbluez-4d04b9f573e586ba68ea5ba205b86883b1b34d1d.tar.gz
client: Introduce ad_disable_{uuids,service,manufacturer}
Diffstat (limited to 'client/advertising.c')
-rw-r--r--client/advertising.c39
1 files changed, 36 insertions, 3 deletions
diff --git a/client/advertising.c b/client/advertising.c
index f1b08c0b6..3cfc318ba 100644
--- a/client/advertising.c
+++ b/client/advertising.c
@@ -507,6 +507,13 @@ void ad_unregister(DBusConnection *conn, GDBusProxy *manager)
}
}
+static void ad_clear_uuids(void)
+{
+ g_strfreev(ad.uuids);
+ ad.uuids = NULL;
+ ad.uuids_len = 0;
+}
+
void ad_advertise_uuids(DBusConnection *conn, int argc, char *argv[])
{
if (argc < 2 || !strlen(argv[1])) {
@@ -514,9 +521,7 @@ void ad_advertise_uuids(DBusConnection *conn, int argc, char *argv[])
return;
}
- g_strfreev(ad.uuids);
- ad.uuids = NULL;
- ad.uuids_len = 0;
+ ad_clear_uuids();
ad.uuids = g_strdupv(&argv[1]);
if (!ad.uuids) {
@@ -529,6 +534,15 @@ void ad_advertise_uuids(DBusConnection *conn, int argc, char *argv[])
g_dbus_emit_property_changed(conn, AD_PATH, AD_IFACE, "ServiceUUIDs");
}
+void ad_disable_uuids(DBusConnection *conn)
+{
+ if (!ad.uuids)
+ return;
+
+ ad_clear_uuids();
+ g_dbus_emit_property_changed(conn, AD_PATH, AD_IFACE, "ServiceUUIDs");
+}
+
static void ad_clear_service(void)
{
g_free(ad.service.uuid);
@@ -578,6 +592,15 @@ void ad_advertise_service(DBusConnection *conn, int argc, char *argv[])
g_dbus_emit_property_changed(conn, AD_PATH, AD_IFACE, "ServiceData");
}
+void ad_disable_service(DBusConnection *conn)
+{
+ if (!ad.service.uuid)
+ return;
+
+ ad_clear_service();
+ g_dbus_emit_property_changed(conn, AD_PATH, AD_IFACE, "ServiceData");
+}
+
static void ad_clear_manufacturer(void)
{
memset(&ad.manufacturer, 0, sizeof(ad.manufacturer));
@@ -634,6 +657,16 @@ void ad_advertise_manufacturer(DBusConnection *conn, int argc, char *argv[])
"ManufacturerData");
}
+void ad_disable_manufacturer(DBusConnection *conn)
+{
+ if (!ad.manufacturer.id && !ad.manufacturer.data.len)
+ return;
+
+ ad_clear_manufacturer();
+ g_dbus_emit_property_changed(conn, AD_PATH, AD_IFACE,
+ "ManufacturerData");
+}
+
void ad_advertise_tx_power(DBusConnection *conn, dbus_bool_t *value)
{
if (!value) {