The new org.bluez.Device1.Disconnected signal propagates the disconnection reason. --- v1->v2: Display disconnect reason in numerical and text v2->v3: Display disconnect reason name and message instead of numerical value client/main.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/client/main.c b/client/main.c index ad35ae1fb..14d5686fb 100644 --- a/client/main.c +++ b/client/main.c @@ -709,6 +709,24 @@ 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")) { + const char *name; + const char *msg; + + if (!dbus_message_get_args(message, NULL, + DBUS_TYPE_STRING, &name, + DBUS_TYPE_STRING, &msg, + DBUS_TYPE_INVALID)) + goto failed; + + bt_shell_printf("[SIGNAL] %s.%s %s %s\n", + dbus_message_get_interface(message), + dbus_message_get_member(message), + name, msg); + return; + } + +failed: bt_shell_printf("[SIGNAL] %s.%s\n", dbus_message_get_interface(message), dbus_message_get_member(message)); } -- 2.43.0