blob: d69b5c2c838ce51c70034d1aefb0d9aaa27a937e [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
use {
anyhow::Error,
fidl_fuchsia_bluetooth_component::{LifecycleMarker, LifecycleState},
fuchsia_component::{client, fuchsia_single_component_package_url},
};
const AVRCP_TARGET_URL: &str = fuchsia_single_component_package_url!("bt-avrcp-target");
/// Launch the AVRCP target component. Returns the App representing the component if it is
/// running, or an error if the component could not be launched.
pub async fn launch() -> Result<client::App, Error> {
let launcher = client::launcher()?;
let child = client::launch(&launcher, AVRCP_TARGET_URL.to_string(), None)?;
let lifecycle = child
.connect_to_service::<LifecycleMarker>()
.expect("failed to connect to component lifecycle protocol");
loop {
match lifecycle.get_state().await? {
LifecycleState::Initializing => continue,
LifecycleState::Ready => break,
}
}
Ok(child)
}