Added DFU service

This commit is contained in:
himalia416
2025-09-30 18:03:54 +02:00
committed by Himali Aryal
parent 22ff62baa7
commit 713a246635
3 changed files with 47 additions and 1 deletions

View File

@@ -0,0 +1,8 @@
package no.nordicsemi.android.toolbox.profile.data
import no.nordicsemi.android.toolbox.lib.utils.Profile
data class DFUServiceData(
override val profile: Profile = Profile.DFU,
val dfuAppName : String? = null,
): ProfileServiceData()

View File

@@ -2,18 +2,33 @@ package no.nordicsemi.android.toolbox.profile.manager
import kotlinx.coroutines.CoroutineScope
import no.nordicsemi.android.toolbox.lib.utils.Profile
import no.nordicsemi.android.toolbox.lib.utils.spec.DFU_SERVICE_UUID
import no.nordicsemi.android.toolbox.lib.utils.spec.EXPERIMENTAL_BUTTONLESS_DFU_SERVICE_UUID
import no.nordicsemi.android.toolbox.lib.utils.spec.LEGACY_DFU_SERVICE_UUID
import no.nordicsemi.android.toolbox.lib.utils.spec.SMP_SERVICE_UUID
import no.nordicsemi.kotlin.ble.client.RemoteService
import kotlin.uuid.ExperimentalUuidApi
import kotlin.uuid.toKotlinUuid
internal class DFUManager :ServiceManager{
override val profile: Profile
get() = Profile.DFU
@OptIn(ExperimentalUuidApi::class)
override suspend fun observeServiceInteractions(
deviceId: String,
remoteService: RemoteService,
scope: CoroutineScope
) {
// No interactions to observe for DFU profile
when (remoteService.uuid) {
DFU_SERVICE_UUID.toKotlinUuid(),
SMP_SERVICE_UUID.toKotlinUuid(),
LEGACY_DFU_SERVICE_UUID.toKotlinUuid(),
EXPERIMENTAL_BUTTONLESS_DFU_SERVICE_UUID.toKotlinUuid() -> this
else -> null
}
}
}

View File

@@ -0,0 +1,23 @@
package no.nordicsemi.android.toolbox.profile.manager.repository
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.update
import no.nordicsemi.android.toolbox.profile.data.DFUServiceData
object DFURepository {
private val _dataMap = mutableMapOf<String, MutableStateFlow<DFUServiceData>>()
fun getData(deviceId: String): Flow<DFUServiceData> {
return _dataMap.getOrPut(deviceId) { MutableStateFlow(DFUServiceData()) }
}
fun updateAppName(deviceId: String, appName: String) {
_dataMap[deviceId]?.update { it.copy(dfuAppName = appName) }
}
fun clear(deviceId: String) {
_dataMap.remove(deviceId)
}
}