use super::*;
pub async fn set_device_class(
socket: &mut ManagementStream,
controller: Controller,
device_class: DeviceClass,
event_tx: Option<mpsc::Sender<Response>>,
) -> Result<(DeviceClass, ServiceClasses)> {
let mut param = BytesMut::with_capacity(2);
param.put_u16_le(device_class.into());
let (_, param) = exec_command(
socket,
Command::SetDeviceClass,
controller,
Some(param.freeze()),
event_tx,
)
.await?;
Ok(device_class_from_bytes(param.ok_or(Error::NoData)?))
}
pub async fn add_uuid(
socket: &mut ManagementStream,
controller: Controller,
uuid: [u8; 16],
svc_hint: ServiceClasses,
event_tx: Option<mpsc::Sender<Response>>,
) -> Result<(DeviceClass, ServiceClasses)> {
let mut param = BytesMut::with_capacity(17);
param.put_slice(&uuid[..]);
param.put_u8((svc_hint.bits() >> 16) as u8);
let (_, param) = exec_command(
socket,
Command::AddUUID,
controller,
Some(param.freeze()),
event_tx,
)
.await?;
Ok(device_class_from_bytes(param.ok_or(Error::NoData)?))
}
pub async fn remove_uuid(
socket: &mut ManagementStream,
controller: Controller,
uuid: [u8; 16],
event_tx: Option<mpsc::Sender<Response>>,
) -> Result<(DeviceClass, ServiceClasses)> {
let param = BytesMut::from(&uuid[..]);
let (_, param) = exec_command(
socket,
Command::RemoveUUID,
controller,
Some(param.freeze()),
event_tx,
)
.await?;
Ok(device_class_from_bytes(param.ok_or(Error::NoData)?))
}