static void profile_init(pa_bluetooth_backend *b, pa_bluetooth_profile_t profile) { static const DBusObjectPathVTable vtable_profile = { .message_function = profile_handler, }; const char *object_name; const char *uuid; pa_assert(b); switch (profile) { case PA_BLUETOOTH_PROFILE_HEADSET_HEAD_UNIT: object_name = HSP_AG_PROFILE; uuid = PA_BLUETOOTH_UUID_HSP_AG; break; case PA_BLUETOOTH_PROFILE_HEADSET_AUDIO_GATEWAY: object_name = HSP_HS_PROFILE; uuid = PA_BLUETOOTH_UUID_HSP_HS; break; default: pa_assert_not_reached(); break; } pa_assert_se(dbus_connection_register_object_path(pa_dbus_connection_get(b->connection), object_name, &vtable_profile, b)); register_profile(b, object_name, uuid); }
static void name_acquired(DBusConnection *conn, void *user_data) { GSList *l; DBG("org.bluez appeared"); for (l = profiles; l; l = l->next) { struct bluetooth_profile *profile = l->data; const char *uuid; if (profile->path != NULL) continue; if (register_profile(profile) < 0) { error("bluetooth: Failed to register profile %s", profile->path); g_free(profile->path); profile->path = NULL; } } }