virtual-device-app: Add Doorlock/PowerSource repository (#29127)
Signed-off-by: Jaehoon You <jaehoon.you@samsung.com>
Signed-off-by: Charles Kim <chulspro.kim@samsung.com>
diff --git a/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/di/DataModule.kt b/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/di/DataModule.kt
index 8168f63..d6dadd0 100644
--- a/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/di/DataModule.kt
+++ b/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/di/DataModule.kt
@@ -1,8 +1,12 @@
package com.matter.virtual.device.app.core.data.di
import com.matter.virtual.device.app.core.data.repository.*
+import com.matter.virtual.device.app.core.data.repository.cluster.DoorLockManagerRepository
+import com.matter.virtual.device.app.core.data.repository.cluster.DoorLockManagerRepositoryImpl
import com.matter.virtual.device.app.core.data.repository.cluster.OnOffManagerRepository
import com.matter.virtual.device.app.core.data.repository.cluster.OnOffManagerRepositoryImpl
+import com.matter.virtual.device.app.core.data.repository.cluster.PowerSourceManagerRepository
+import com.matter.virtual.device.app.core.data.repository.cluster.PowerSourceManagerRepositoryImpl
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
@@ -11,12 +15,21 @@
@InstallIn(SingletonComponent::class)
@Module
internal abstract class DataModule {
+ @Binds
+ abstract fun bindDoorLockManagerRepository(
+ repository: DoorLockManagerRepositoryImpl
+ ): DoorLockManagerRepository
@Binds
abstract fun bindOnOffManagerRepository(
repository: OnOffManagerRepositoryImpl
): OnOffManagerRepository
+ @Binds
+ abstract fun bindPowerSourceManagerRepository(
+ repository: PowerSourceManagerRepositoryImpl
+ ): PowerSourceManagerRepository
+
@Binds abstract fun bindMatterRepository(repository: MatterRepositoryImpl): MatterRepository
@Binds abstract fun bindNetworkRepository(repository: NetworkRepositoryImpl): NetworkRepository
diff --git a/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/repository/cluster/DoorLockManagerRepository.kt b/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/repository/cluster/DoorLockManagerRepository.kt
new file mode 100644
index 0000000..cdc7e38
--- /dev/null
+++ b/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/repository/cluster/DoorLockManagerRepository.kt
@@ -0,0 +1,11 @@
+package com.matter.virtual.device.app.core.data.repository.cluster
+
+import kotlinx.coroutines.flow.StateFlow
+
+interface DoorLockManagerRepository {
+ fun getLockStateFlow(): StateFlow<Boolean>
+
+ suspend fun setLockState(value: Boolean)
+
+ suspend fun sendLockAlarmEvent()
+}
diff --git a/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/repository/cluster/DoorLockManagerRepositoryImpl.kt b/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/repository/cluster/DoorLockManagerRepositoryImpl.kt
new file mode 100644
index 0000000..4dfa15a
--- /dev/null
+++ b/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/repository/cluster/DoorLockManagerRepositoryImpl.kt
@@ -0,0 +1,24 @@
+package com.matter.virtual.device.app.core.data.repository.cluster
+
+import com.matter.virtual.device.app.core.matter.manager.DoorLockManagerStub
+import javax.inject.Inject
+import kotlinx.coroutines.flow.StateFlow
+import timber.log.Timber
+
+internal class DoorLockManagerRepositoryImpl
+@Inject
+constructor(private val doorLockManagerStub: DoorLockManagerStub) : DoorLockManagerRepository {
+
+ override fun getLockStateFlow(): StateFlow<Boolean> {
+ return doorLockManagerStub.lockState
+ }
+
+ override suspend fun setLockState(value: Boolean) {
+ Timber.d("setLockState():$value")
+ doorLockManagerStub.setLockState(value)
+ }
+
+ override suspend fun sendLockAlarmEvent() {
+ doorLockManagerStub.sendLockAlarmEvent()
+ }
+}
diff --git a/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/repository/cluster/PowerSourceManagerRepository.kt b/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/repository/cluster/PowerSourceManagerRepository.kt
new file mode 100644
index 0000000..3948f79
--- /dev/null
+++ b/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/repository/cluster/PowerSourceManagerRepository.kt
@@ -0,0 +1,9 @@
+package com.matter.virtual.device.app.core.data.repository.cluster
+
+import kotlinx.coroutines.flow.StateFlow
+
+interface PowerSourceManagerRepository {
+ fun getBatPercent(): StateFlow<Int>
+
+ suspend fun setBatPercentRemaining(batteryPercentRemaining: Int)
+}
diff --git a/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/repository/cluster/PowerSourceManagerRepositoryImpl.kt b/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/repository/cluster/PowerSourceManagerRepositoryImpl.kt
new file mode 100644
index 0000000..d180e18
--- /dev/null
+++ b/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/repository/cluster/PowerSourceManagerRepositoryImpl.kt
@@ -0,0 +1,19 @@
+package com.matter.virtual.device.app.core.data.repository.cluster
+
+import com.matter.virtual.device.app.core.matter.manager.PowerSourceManagerStub
+import javax.inject.Inject
+import kotlinx.coroutines.flow.StateFlow
+
+internal class PowerSourceManagerRepositoryImpl
+@Inject
+constructor(private val powerSourceManagerStub: PowerSourceManagerStub) :
+ PowerSourceManagerRepository {
+
+ override fun getBatPercent(): StateFlow<Int> {
+ return powerSourceManagerStub.batPercent
+ }
+
+ override suspend fun setBatPercentRemaining(batteryPercentRemaining: Int) {
+ powerSourceManagerStub.setBatPercentRemaining(batteryPercentRemaining)
+ }
+}