diff options
author | ERAMOTO Masaya <eramoto.masaya@jp.fujitsu.com> | 2018-02-16 14:51:37 +0900 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2018-02-19 12:21:11 +0200 |
commit | 4d04b9f573e586ba68ea5ba205b86883b1b34d1d (patch) | |
tree | 6bd9d276c53777925d9d8dd49a0aa7575848adc3 /client/advertising.c | |
parent | f0fccd6f4d4bc89771d16c44951e21092f57f121 (diff) | |
download | bluez-4d04b9f573e586ba68ea5ba205b86883b1b34d1d.tar.gz |
client: Introduce ad_disable_{uuids,service,manufacturer}
Diffstat (limited to 'client/advertising.c')
-rw-r--r-- | client/advertising.c | 39 |
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) { |