From b8c1cec206510676377c91ea3eb05ab9c660554a Mon Sep 17 00:00:00 2001 From: Jaehoon-You <55170115+Jaehoon-You@users.noreply.github.com> Date: Tue, 17 Oct 2023 09:50:23 +0900 Subject: [PATCH] [Android] virtual-device-app: Add usecase of the Doorlock/PowerSource cluster (#29708) * virtual-device-app: Add powersource usecase Signed-off-by: Jaehoon You Signed-off-by: Charles Kim * virtual-device-app: Add doorlock usecase Signed-off-by: Jaehoon You Signed-off-by: Charles Kim --------- Signed-off-by: Jaehoon You Signed-off-by: Charles Kim --- .../doorlock/GetLockStateFlowUseCase.kt | 12 ++++++++++++ .../doorlock/SendLockAlarmEventUseCase.kt | 19 +++++++++++++++++++ .../cluster/doorlock/SetLockStateUseCase.kt | 19 +++++++++++++++++++ .../GetBatPercentRemainingUseCase.kt | 13 +++++++++++++ .../SetBatPercentRemainingUseCase.kt | 19 +++++++++++++++++++ 5 files changed, 82 insertions(+) create mode 100644 examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/doorlock/GetLockStateFlowUseCase.kt create mode 100644 examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/doorlock/SendLockAlarmEventUseCase.kt create mode 100644 examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/doorlock/SetLockStateUseCase.kt create mode 100644 examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/powersource/GetBatPercentRemainingUseCase.kt create mode 100644 examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/powersource/SetBatPercentRemainingUseCase.kt diff --git a/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/doorlock/GetLockStateFlowUseCase.kt b/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/doorlock/GetLockStateFlowUseCase.kt new file mode 100644 index 00000000000000..b167997c0294e2 --- /dev/null +++ b/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/doorlock/GetLockStateFlowUseCase.kt @@ -0,0 +1,12 @@ +package com.matter.virtual.device.app.core.domain.usecase.matter.cluster.doorlock + +import com.matter.virtual.device.app.core.data.repository.cluster.DoorLockManagerRepository +import javax.inject.Inject +import kotlinx.coroutines.flow.StateFlow + +class GetLockStateFlowUseCase +@Inject +constructor(private val doorLockManagerRepository: DoorLockManagerRepository) { + + operator fun invoke(): StateFlow = doorLockManagerRepository.getLockStateFlow() +} diff --git a/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/doorlock/SendLockAlarmEventUseCase.kt b/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/doorlock/SendLockAlarmEventUseCase.kt new file mode 100644 index 00000000000000..e5e79a1c18062a --- /dev/null +++ b/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/doorlock/SendLockAlarmEventUseCase.kt @@ -0,0 +1,19 @@ +package com.matter.virtual.device.app.core.domain.usecase.matter.cluster.doorlock + +import com.matter.virtual.device.app.core.common.di.IoDispatcher +import com.matter.virtual.device.app.core.data.repository.cluster.DoorLockManagerRepository +import com.matter.virtual.device.app.core.domain.NonParamCoroutineUseCase +import javax.inject.Inject +import kotlinx.coroutines.CoroutineDispatcher + +class SendLockAlarmEventUseCase +@Inject +constructor( + private val doorLockManagerRepository: DoorLockManagerRepository, + @IoDispatcher dispatcher: CoroutineDispatcher +) : NonParamCoroutineUseCase(dispatcher) { + + override suspend fun execute() { + return doorLockManagerRepository.sendLockAlarmEvent() + } +} diff --git a/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/doorlock/SetLockStateUseCase.kt b/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/doorlock/SetLockStateUseCase.kt new file mode 100644 index 00000000000000..3bec41f20a59f8 --- /dev/null +++ b/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/doorlock/SetLockStateUseCase.kt @@ -0,0 +1,19 @@ +package com.matter.virtual.device.app.core.domain.usecase.matter.cluster.doorlock + +import com.matter.virtual.device.app.core.common.di.IoDispatcher +import com.matter.virtual.device.app.core.data.repository.cluster.DoorLockManagerRepository +import com.matter.virtual.device.app.core.domain.CoroutineUseCase +import javax.inject.Inject +import kotlinx.coroutines.CoroutineDispatcher + +class SetLockStateUseCase +@Inject +constructor( + private val doorLockManagerRepository: DoorLockManagerRepository, + @IoDispatcher dispatcher: CoroutineDispatcher +) : CoroutineUseCase(dispatcher) { + + override suspend fun execute(param: Boolean) { + doorLockManagerRepository.setLockState(param) + } +} diff --git a/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/powersource/GetBatPercentRemainingUseCase.kt b/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/powersource/GetBatPercentRemainingUseCase.kt new file mode 100644 index 00000000000000..9ff150824659eb --- /dev/null +++ b/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/powersource/GetBatPercentRemainingUseCase.kt @@ -0,0 +1,13 @@ +package com.matter.virtual.device.app.core.domain.usecase.matter.cluster.powersource + +import com.matter.virtual.device.app.core.data.repository.cluster.PowerSourceManagerRepository +import javax.inject.Inject +import kotlinx.coroutines.flow.StateFlow + +class GetBatPercentRemainingUseCase +@Inject +constructor( + private val powerSourceManagerRepository: PowerSourceManagerRepository, +) { + operator fun invoke(): StateFlow = powerSourceManagerRepository.getBatPercent() +} diff --git a/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/powersource/SetBatPercentRemainingUseCase.kt b/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/powersource/SetBatPercentRemainingUseCase.kt new file mode 100644 index 00000000000000..00840676483ff6 --- /dev/null +++ b/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/powersource/SetBatPercentRemainingUseCase.kt @@ -0,0 +1,19 @@ +package com.matter.virtual.device.app.core.domain.usecase.matter.cluster.powersource + +import com.matter.virtual.device.app.core.common.di.IoDispatcher +import com.matter.virtual.device.app.core.data.repository.cluster.PowerSourceManagerRepository +import com.matter.virtual.device.app.core.domain.CoroutineUseCase +import javax.inject.Inject +import kotlinx.coroutines.CoroutineDispatcher + +class SetBatPercentRemainingUseCase +@Inject +constructor( + private val powerSourceManagerRepository: PowerSourceManagerRepository, + @IoDispatcher dispatcher: CoroutineDispatcher +) : CoroutineUseCase(dispatcher) { + + override suspend fun execute(param: Int) { + powerSourceManagerRepository.setBatPercentRemaining(param) + } +}