The new org.bluez.Device1.Disconnected signal propagates the disconnection reason. --- client/main.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/client/main.c b/client/main.c index 57d71f2b6..79d0707bb 100644 --- a/client/main.c +++ b/client/main.c @@ -709,6 +709,26 @@ static void property_changed(GDBusProxy *proxy, const char *name, static void message_handler(DBusConnection *connection, DBusMessage *message, void *user_data) { + if (!strcmp(dbus_message_get_member(message), "Disconnected")) { + DBusMessageIter iter; + const char *reason; + + if (!dbus_message_iter_init(message, &iter)) + goto failed; + + if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING) + goto failed; + + dbus_message_iter_get_basic(&iter, &reason); + + bt_shell_printf("[SIGNAL] %s.%s %s\n", + dbus_message_get_interface(message), + dbus_message_get_member(message), + reason); + return; + } + +failed: bt_shell_printf("[SIGNAL] %s.%s\n", dbus_message_get_interface(message), dbus_message_get_member(message)); } -- 2.43.0