From a3c5d5fb608b25f250e4e46f1be40a3b554d4634 Mon Sep 17 00:00:00 2001 From: himalia416 Date: Tue, 7 Oct 2025 10:12:16 +0200 Subject: [PATCH] Disconnect dfu device after redirection --- .../no/nordicsemi/android/toolbox/profile/ProfileScreen.kt | 4 ++-- .../nordicsemi/android/toolbox/profile/view/dfu/DFUScreen.kt | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/profile/src/main/java/no/nordicsemi/android/toolbox/profile/ProfileScreen.kt b/profile/src/main/java/no/nordicsemi/android/toolbox/profile/ProfileScreen.kt index 315498a9..6d3f6b8a 100644 --- a/profile/src/main/java/no/nordicsemi/android/toolbox/profile/ProfileScreen.kt +++ b/profile/src/main/java/no/nordicsemi/android/toolbox/profile/ProfileScreen.kt @@ -29,12 +29,12 @@ import no.nordicsemi.android.common.permissions.ble.RequireLocation import no.nordicsemi.android.common.permissions.notification.RequestNotificationPermission import no.nordicsemi.android.toolbox.lib.utils.Profile import no.nordicsemi.android.toolbox.profile.data.displayMessage -import no.nordicsemi.android.toolbox.profile.view.dfu.DFUScreen import no.nordicsemi.android.toolbox.profile.view.battery.BatteryScreen import no.nordicsemi.android.toolbox.profile.view.bps.BPSScreen import no.nordicsemi.android.toolbox.profile.view.cgms.CGMScreen import no.nordicsemi.android.toolbox.profile.view.channelSounding.ChannelSoundingScreen import no.nordicsemi.android.toolbox.profile.view.cscs.CSCScreen +import no.nordicsemi.android.toolbox.profile.view.dfu.DFUScreen import no.nordicsemi.android.toolbox.profile.view.directionFinder.DFSScreen import no.nordicsemi.android.toolbox.profile.view.gls.GLSScreen import no.nordicsemi.android.toolbox.profile.view.hrs.HRSScreen @@ -208,7 +208,7 @@ internal fun DeviceConnectedView( Profile.BATTERY -> BatteryScreen() Profile.THROUGHPUT -> ThroughputScreen(state.maxValueLength) Profile.UART -> UARTScreen(state.maxValueLength) - Profile.DFU -> DFUScreen() + Profile.DFU -> DFUScreen { onEvent(ConnectionEvent.DisconnectEvent) } } } } diff --git a/profile/src/main/java/no/nordicsemi/android/toolbox/profile/view/dfu/DFUScreen.kt b/profile/src/main/java/no/nordicsemi/android/toolbox/profile/view/dfu/DFUScreen.kt index c66c3a50..0aa38d08 100644 --- a/profile/src/main/java/no/nordicsemi/android/toolbox/profile/view/dfu/DFUScreen.kt +++ b/profile/src/main/java/no/nordicsemi/android/toolbox/profile/view/dfu/DFUScreen.kt @@ -26,10 +26,11 @@ import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import no.nordicsemi.android.toolbox.profile.R +import no.nordicsemi.android.toolbox.profile.viewmodel.ConnectionEvent import no.nordicsemi.android.toolbox.profile.viewmodel.DFUViewModel @Composable -internal fun DFUScreen() { +internal fun DFUScreen(onRedirection: (ConnectionEvent.DisconnectEvent) -> Unit) { val dfuViewModel = hiltViewModel() val dfuServiceState by dfuViewModel.dfuServiceState.collectAsStateWithLifecycle() val context = LocalContext.current @@ -91,6 +92,8 @@ internal fun DFUScreen() { onClick = { intent?.let { context.startActivity(it) } ?: uriHandler.openUri(dfuApp.appLink) + // Also disconnect from the current device. + onRedirection(ConnectionEvent.DisconnectEvent) } ) { Row(verticalAlignment = Alignment.CenterVertically) {