@@ -184,7 +184,7 @@ int NimbleController::OnGAPEvent(ble_gap_event* event) {
184184 case BLE_GAP_EVENT_ADV_COMPLETE:
185185 NRF_LOG_INFO (" Advertising event : BLE_GAP_EVENT_ADV_COMPLETE" );
186186 NRF_LOG_INFO (" reason=%d; status=%0X" , event->adv_complete .reason , event->connect .status );
187- if (bleController.GetConnectState () == Ble::ConnectStates::Disconnected ) {
187+ if (bleController.IsRadioEnabled () && !bleController. IsConnected () ) {
188188 StartAdvertising ();
189189 }
190190 break ;
@@ -199,12 +199,12 @@ int NimbleController::OnGAPEvent(ble_gap_event* event) {
199199 currentTimeClient.Reset ();
200200 alertNotificationClient.Reset ();
201201 connectionHandle = BLE_HS_CONN_HANDLE_NONE;
202- bleController.SetConnectState (Ble::ConnectStates::Disconnected );
202+ bleController.Disconnect ( );
203203 fastAdvCount = 0 ;
204204 StartAdvertising ();
205205 } else {
206206 connectionHandle = event->connect .conn_handle ;
207- bleController.SetConnectState (Ble::ConnectStates::Connected );
207+ bleController.Connect ( );
208208 systemTask.PushMessage (Pinetime::System::Messages::BleConnected);
209209 // Service discovery is deferred via systemtask
210210 }
@@ -222,8 +222,8 @@ int NimbleController::OnGAPEvent(ble_gap_event* event) {
222222 currentTimeClient.Reset ();
223223 alertNotificationClient.Reset ();
224224 connectionHandle = BLE_HS_CONN_HANDLE_NONE;
225- if (bleController.GetConnectState () == Ble::ConnectStates::Connected ) {
226- bleController.SetConnectState (Ble::ConnectStates::Disconnected );
225+ if (bleController.IsConnected () ) {
226+ bleController.Disconnect ( );
227227 fastAdvCount = 0 ;
228228 StartAdvertising ();
229229 }
@@ -401,19 +401,20 @@ void NimbleController::NotifyBatteryLevel(uint8_t level) {
401401 }
402402}
403403
404- void NimbleController::SwitchAirplaneMode (bool enabled) {
405- if (enabled) {
406- if (bleController.IsConnected ()) {
407- bleController.SetConnectState (Ble::ConnectStates::Airplane);
408- ble_gap_terminate (connectionHandle, BLE_ERR_REM_USER_CONN_TERM);
409- } else {
410- bleController.SetConnectState (Ble::ConnectStates::Airplane);
411- ble_gap_adv_stop ();
412- }
404+ void NimbleController::EnableRadio () {
405+ bleController.EnableRadio ();
406+ bleController.Disconnect ();
407+ fastAdvCount = 0 ;
408+ StartAdvertising ();
409+ }
410+
411+ void NimbleController::DisableRadio () {
412+ bleController.DisableRadio ();
413+ if (bleController.IsConnected ()) {
414+ ble_gap_terminate (connectionHandle, BLE_ERR_REM_USER_CONN_TERM);
415+ bleController.Disconnect ();
413416 } else {
414- bleController.SetConnectState (Ble::ConnectStates::Disconnected);
415- fastAdvCount = 0 ;
416- StartAdvertising ();
417+ ble_gap_adv_stop ();
417418 }
418419}
419420
0 commit comments