Skip to content

Commit

Permalink
migrate info to new api
Browse files Browse the repository at this point in the history
  • Loading branch information
makeevrserg committed Dec 15, 2024
1 parent ab3df06 commit 2e3cb15
Show file tree
Hide file tree
Showing 25 changed files with 210 additions and 205 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ package com.flipperdevices.bridge.connection.feature.alarm.api

import com.flipperdevices.bridge.connection.feature.common.api.FDeviceFeatureApi

interface FAlarmFeatureApi: FDeviceFeatureApi {
interface FAlarmFeatureApi : FDeviceFeatureApi {
suspend fun makeSound()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,19 @@ package com.flipperdevices.bridge.connection.feature.alarm.impl.api
import com.flipperdevices.bridge.connection.feature.alarm.api.FAlarmFeatureApi
import com.flipperdevices.bridge.connection.feature.rpc.api.FRpcFeatureApi
import com.flipperdevices.bridge.connection.feature.rpc.model.wrapToRequest
import com.flipperdevices.bridge.connection.feature.rpcinfo.model.FlipperInformationStatus
import com.flipperdevices.core.ktx.jre.toThrowableFlow
import com.flipperdevices.core.ktx.jre.withLock
import com.flipperdevices.core.log.LogTagProvider
import com.flipperdevices.core.log.info
import com.flipperdevices.protobuf.Main
import com.flipperdevices.protobuf.storage.InfoRequest
import com.flipperdevices.protobuf.system.PlayAudiovisualAlertRequest
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.cancelAndJoin
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock

class FAlarmFeatureApiImpl @AssistedInject constructor(
@Assisted private val rpcFeatureApi: FRpcFeatureApi,
) : FAlarmFeatureApi,
LogTagProvider {
override val TAG = "FAlarmFeatureApi"


override suspend fun makeSound() {
rpcFeatureApi.requestWithoutAnswer(
Main(
Expand All @@ -46,4 +30,4 @@ class FAlarmFeatureApiImpl @AssistedInject constructor(
rpcFeatureApi: FRpcFeatureApi,
): FAlarmFeatureApiImpl
}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.flipperdevices.bridge.connection.feature.alarm.impl.api

import com.flipperdevices.bridge.connection.feature.alarm.api.FAlarmFeatureApi
import com.flipperdevices.bridge.connection.feature.common.api.FDeviceFeature
import com.flipperdevices.bridge.connection.feature.common.api.FDeviceFeatureApi
import com.flipperdevices.bridge.connection.feature.common.api.FDeviceFeatureQualifier
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ interface FDeviceColorFeatureApi : FDeviceFeatureApi {
* @param default default value on response failure
*/
fun getColor(default: HardwareColor = HardwareColor.WHITE): Flow<HardwareColor>
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,4 @@ class FDeviceColorFeatureApiImpl @AssistedInject constructor(
companion object {
private const val RPC_KEY_HARDWARE_COLOR = "hardware.color"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package com.flipperdevices.bridge.connection.feature.getinfo.model
data class FGattInformation(
val deviceName: String? = null,
val manufacturerName: String? = null,
val hardwareRevision: String? = null,
val softwareVersion: String? = null,
val batteryLevel: Float? = null,
val isCharging: Boolean = false
)
)
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,9 @@ import dagger.assisted.AssistedInject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.mapNotNull
Expand Down Expand Up @@ -67,7 +65,9 @@ class FGetInfoFeatureApiImpl @AssistedInject constructor(
TransportMetaInfoKey.DEVICE_NAME,
TransportMetaInfoKey.MANUFACTURER,
TransportMetaInfoKey.BATTERY_LEVEL,
TransportMetaInfoKey.BATTERY_POWER_STATE
TransportMetaInfoKey.BATTERY_POWER_STATE,
TransportMetaInfoKey.SOFTWARE_VERSION,
TransportMetaInfoKey.HARDWARE_VERSION
).forEach { key ->
val flow = metaInfoApi.get(key)
.onFailure { error(it) { "#collectGattInfo could not find flow for key $key" } }
Expand Down Expand Up @@ -104,9 +104,20 @@ class FGetInfoFeatureApiImpl @AssistedInject constructor(
)
}

TransportMetaInfoKey.SOFTWARE_VERSION -> {
state.copy(
softwareVersion = String(byteArray)
)
}

TransportMetaInfoKey.HARDWARE_VERSION -> {
state.copy(
hardwareRevision = String(byteArray)
)
}

else -> state
}

}
}.launchIn(scope)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,19 @@ import kotlinx.coroutines.flow.StateFlow
interface FStorageInfoFeatureApi : FDeviceFeatureApi {
fun getStorageInformationFlow(): StateFlow<FlipperStorageInformation>

/**
* Update current [getStorageInformationFlow]
* @param scope parent scope to be launched in
* @param force if true, will cancel last invalidation and start new.
* If true and invalidation in progress, will be skipped
*/
suspend fun invalidate(
scope: CoroutineScope,
force: Boolean = false
)

/**
* Cancels current [invalidate] and reset [getStorageInformationFlow]
*/
suspend fun reset()
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@ interface FConnectionService {
* Forget current device and disconnect from it as side effect
*/
fun forgetCurrentDevice()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -76,4 +76,4 @@ class FConnectionServiceImpl @Inject constructor(
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,11 @@ import com.flipperdevices.core.log.warn
import kotlinx.collections.immutable.ImmutableMap
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.onEach
import no.nordicsemi.android.kotlin.ble.client.main.callback.ClientBleGatt
import no.nordicsemi.android.kotlin.ble.client.main.service.ClientBleGattServices
import no.nordicsemi.android.kotlin.ble.core.data.BleGattProperty
Expand Down
7 changes: 2 additions & 5 deletions components/info/impl/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,8 @@ dependencies {
implementation(projects.components.bridge.connection.feature.alarm.api)
implementation(projects.components.bridge.connection.feature.deviceColor.api)
implementation(projects.components.bridge.connection.feature.protocolversion.api)

implementation(projects.components.bridge.api)
implementation(projects.components.bridge.service.api)
implementation(projects.components.bridge.pbutils)
implementation(projects.components.bridge.rpcinfo.api)
implementation(projects.components.bridge.connection.feature.rpcinfo.api)
implementation(projects.components.bridge.connection.feature.rpcstats.api)

// Core deps
implementation(libs.ktx)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview
import com.flipperdevices.bridge.rpcinfo.model.FlipperInformationStatus
import com.flipperdevices.bridge.rpcinfo.model.FlipperStorageInformation
import com.flipperdevices.bridge.rpcinfo.model.StorageStats
import com.flipperdevices.bridge.rpcinfo.model.dataOrNull
import com.flipperdevices.bridge.rpcinfo.model.externalStorageRequestInProgress
import com.flipperdevices.bridge.rpcinfo.model.flashSdStats
import com.flipperdevices.bridge.rpcinfo.model.isExtStorageEnding
import com.flipperdevices.bridge.rpcinfo.model.toString
import com.flipperdevices.bridge.connection.feature.rpcinfo.model.FlipperInformationStatus
import com.flipperdevices.bridge.connection.feature.storageinfo.model.FlipperStorageInformation
import com.flipperdevices.bridge.connection.feature.storageinfo.model.StorageStats
import com.flipperdevices.bridge.connection.feature.storageinfo.model.dataOrNull
import com.flipperdevices.bridge.connection.feature.storageinfo.model.externalStorageRequestInProgress
import com.flipperdevices.bridge.connection.feature.storageinfo.model.flashSdStats
import com.flipperdevices.bridge.connection.feature.storageinfo.model.isExtStorageEnding
import com.flipperdevices.bridge.connection.feature.storageinfo.model.toString
import com.flipperdevices.core.ui.theme.FlipperThemeInternal
import com.flipperdevices.core.ui.theme.LocalPallet
import com.flipperdevices.info.impl.R
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
import com.flipperdevices.bridge.rpcinfo.model.FlipperInformationStatus
import com.flipperdevices.bridge.rpcinfo.model.FlipperRpcInformation
import com.flipperdevices.bridge.rpcinfo.model.dataOrNull
import com.flipperdevices.bridge.connection.feature.rpcinfo.model.FlipperInformationStatus
import com.flipperdevices.bridge.connection.feature.rpcinfo.model.FlipperRpcInformation
import com.flipperdevices.bridge.connection.feature.storageinfo.model.dataOrNull
import com.flipperdevices.core.ui.ktx.OrangeAppBar
import com.flipperdevices.core.ui.ktx.clickableRipple
import com.flipperdevices.core.ui.theme.LocalPallet
Expand Down Expand Up @@ -42,10 +42,10 @@ fun ComposableFullDeviceInfoScreen(
val inProgress = when (localDeviceStatus) {
is DeviceStatus.NoDeviceInformation -> localDeviceStatus.connectInProgress
is DeviceStatus.Connected ->
flipperRpcInformation !is FlipperInformationStatus.Ready ||
basicInfo.storageInfo.externalStorageStatus !is FlipperInformationStatus.Ready ||
basicInfo.storageInfo.internalStorageStatus !is FlipperInformationStatus.Ready ||
basicInfo.firmwareVersion !is FlipperInformationStatus.Ready
flipperRpcInformation !is FlipperInformationStatus.Ready<*> ||
basicInfo.storageInfo.externalStorageStatus !is FlipperInformationStatus.Ready<*> ||
basicInfo.storageInfo.internalStorageStatus !is FlipperInformationStatus.Ready<*> ||
basicInfo.firmwareVersion !is FlipperInformationStatus.Ready<*>

else -> false
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package com.flipperdevices.info.impl.compose.screens.fullinfo

import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color
import com.flipperdevices.bridge.rpcinfo.model.FirmwareInfo
import com.flipperdevices.bridge.connection.feature.rpcinfo.model.FirmwareInfo
import com.flipperdevices.info.impl.R
import com.flipperdevices.info.shared.ComposableDeviceInfoRow
import com.flipperdevices.info.shared.ComposableDeviceInfoRowWithText
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.flipperdevices.info.impl.compose.screens.fullinfo
import androidx.compose.foundation.layout.Row
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import com.flipperdevices.bridge.rpcinfo.model.FlipperDeviceInfo
import com.flipperdevices.bridge.connection.feature.rpcinfo.model.FlipperDeviceInfo
import com.flipperdevices.info.impl.R
import com.flipperdevices.info.shared.ComposableDeviceInfoRow
import com.flipperdevices.info.shared.ComposableDeviceInfoRowText
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import androidx.compose.foundation.verticalScroll
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.flipperdevices.bridge.rpcinfo.model.FlipperRpcInformation
import com.flipperdevices.bridge.connection.feature.rpcinfo.model.FlipperRpcInformation
import com.flipperdevices.core.ktx.jre.titlecaseFirstCharIfItIsLowercase
import com.flipperdevices.core.ui.ktx.elements.SwipeRefresh
import com.flipperdevices.info.impl.R
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ package com.flipperdevices.info.impl.compose.screens.fullinfo

import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
import com.flipperdevices.bridge.rpcinfo.model.RadioStackInfo
import com.flipperdevices.bridge.rpcinfo.model.RadioStackType
import com.flipperdevices.bridge.connection.feature.rpcinfo.model.RadioStackInfo
import com.flipperdevices.bridge.connection.feature.rpcinfo.model.RadioStackType
import com.flipperdevices.core.ktx.jre.isNotNull
import com.flipperdevices.info.impl.R
import com.flipperdevices.info.shared.ComposableDeviceInfoRowWithText
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.flipperdevices.info.impl.model

import androidx.compose.runtime.Stable
import com.flipperdevices.bridge.rpcinfo.model.FlipperInformationStatus
import com.flipperdevices.bridge.rpcinfo.model.FlipperStorageInformation
import com.flipperdevices.bridge.connection.feature.rpcinfo.model.FlipperInformationStatus
import com.flipperdevices.bridge.connection.feature.storageinfo.model.FlipperStorageInformation
import com.flipperdevices.updater.model.FirmwareVersion

@Stable
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
package com.flipperdevices.info.impl.viewmodel

import androidx.datastore.core.DataStore
import com.flipperdevices.bridge.connection.config.api.FDevicePersistedStorage
import com.flipperdevices.bridge.connection.orchestrator.api.FDeviceOrchestrator
import com.flipperdevices.bridge.connection.service.api.FConnectionService
import com.flipperdevices.bridge.synchronization.api.SynchronizationApi
import com.flipperdevices.core.preference.pb.PairSettings
import com.flipperdevices.core.ui.lifecycle.DecomposeViewModel
import com.flipperdevices.info.impl.model.ConnectRequestState
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import java.util.concurrent.atomic.AtomicBoolean
Expand Down
Loading

0 comments on commit 2e3cb15

Please sign in to comment.