From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> This allows the use of type 0x00 which otherwise could not be selected since the property would not be exposed even though the data could be set. --- client/advertising.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/client/advertising.c b/client/advertising.c index a7474d6a2984..a9b865a65e37 100644 --- a/client/advertising.c +++ b/client/advertising.c @@ -43,6 +43,7 @@ struct manufacturer_data { }; struct data { + bool valid; uint8_t type; struct ad_data data; }; @@ -157,7 +158,7 @@ static void print_ad(void) ad.manufacturer.data.len); } - if (ad.data.data.len) { + if (ad.data.valid) { bt_shell_printf("Data Type: 0x%02x\n", ad.data.type); bt_shell_hexdump(ad.data.data.data, ad.data.data.len); } @@ -395,7 +396,7 @@ static gboolean get_timeout(const GDBusPropertyTable *property, static gboolean data_exists(const GDBusPropertyTable *property, void *data) { - return ad.data.type != 0; + return ad.data.valid; } static gboolean get_data(const GDBusPropertyTable *property, @@ -757,7 +758,7 @@ void ad_disable_manufacturer(DBusConnection *conn) static void ad_clear_data(void) { - memset(&ad.manufacturer, 0, sizeof(ad.manufacturer)); + memset(&ad.data, 0, sizeof(ad.data)); return bt_shell_noninteractive_quit(EXIT_SUCCESS); } @@ -787,6 +788,7 @@ void ad_advertise_data(DBusConnection *conn, int argc, char *argv[]) return bt_shell_noninteractive_quit(EXIT_FAILURE); ad_clear_data(); + ad.data.valid = true; ad.data.type = val; ad.data.data = data; -- 2.44.0