mirror of
https://github.com/aljazceru/Android-nRF-Toolbox.git
synced 2026-02-21 14:44:26 +01:00
Added DFU service
This commit is contained in:
@@ -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()
|
||||
@@ -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
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user