imsg_session/
lifecycle.rs1use map_core::client::MapClient;
4use pbap_core::client::PbapClient;
5use tokio::io::{AsyncRead, AsyncWrite};
6
7use crate::SessionError;
8
9pub async fn establish_map_session<T: AsyncRead + AsyncWrite + Unpin>(
16 stream: T,
17) -> Result<MapClient<T>, SessionError> {
18 let mut client = MapClient::connect(stream).await?;
19 client.set_notification_registration(true).await?;
20 Ok(client)
21}
22
23pub async fn connect_map(
29 addr: bluer::Address,
30 channel: u8,
31) -> Result<MapClient<bluer::rfcomm::Stream>, SessionError> {
32 let stream = transport::rfcomm::connect(addr, channel).await?;
33 establish_map_session(stream).await
34}
35
36pub async fn connect_pbap(
42 addr: bluer::Address,
43 channel: u8,
44) -> Result<PbapClient<bluer::rfcomm::Stream>, SessionError> {
45 let stream = transport::rfcomm::connect(addr, channel).await?;
46 let client = PbapClient::connect(stream).await?;
47 Ok(client)
48}