diff --git a/system/gd/rust/linux/stack/src/suspend.rs b/system/gd/rust/linux/stack/src/suspend.rs index b1d90ee882908c37c3c4016f57d90a468b0f8c4d..ed7814615d048e8159289b426dc1e5a02f3ffca4 100644 --- a/system/gd/rust/linux/stack/src/suspend.rs +++ b/system/gd/rust/linux/stack/src/suspend.rs @@ -88,7 +88,7 @@ pub struct Suspend { gatt: Arc<Mutex<Box<BluetoothGatt>>>, tx: Sender<Message>, callbacks: Callbacks<dyn ISuspendCallback + Send>, - is_connected_suspend: bool, + is_wakeful_suspend: bool, was_a2dp_connected: bool, suspend_timeout_joinhandle: Option<tokio::task::JoinHandle<()>>, suspend_state: Arc<Mutex<SuspendState>>, @@ -107,7 +107,7 @@ impl Suspend { gatt, tx: tx.clone(), callbacks: Callbacks::new(tx.clone(), Message::SuspendCallbackDisconnected), - is_connected_suspend: false, + is_wakeful_suspend: false, was_a2dp_connected: false, suspend_timeout_joinhandle: None, suspend_state: Arc::new(Mutex::new(SuspendState::new())), @@ -161,10 +161,8 @@ impl ISuspend for Suspend { self.intf.lock().unwrap().clear_event_filter(); self.intf.lock().unwrap().clear_filter_accept_list(); - // TODO(224602924): How do we get the advertising ids? - self.gatt.lock().unwrap().stop_advertising_set(0); - // TODO(224602924): How do we get the scanning ids? - self.gatt.lock().unwrap().stop_scan(0); + self.gatt.lock().unwrap().advertising_enter_suspend(); + self.gatt.lock().unwrap().scan_enter_suspend(); self.intf.lock().unwrap().disconnect_all_acls(); @@ -207,12 +205,13 @@ impl ISuspend for Suspend { self.intf.lock().unwrap().set_default_event_mask_except(0u64, 0u64); self.intf.lock().unwrap().clear_event_filter(); - if self.is_connected_suspend { + if self.is_wakeful_suspend { if self.was_a2dp_connected { // TODO(230604670): reconnect to a2dp device } - // TODO(224603198): start all advertising again } + self.gatt.lock().unwrap().advertising_exit_suspend(); + self.gatt.lock().unwrap().scan_exit_suspend(); self.suspend_state.lock().unwrap().le_rand_expected = true; self.suspend_state.lock().unwrap().resume_expected = true;