Skip to content

Commit

Permalink
Move all BLE logic in FlipperServiceApi (#83)
Browse files Browse the repository at this point in the history
**Background**

Sometime we want execute command longer than application exist

**Changes**

- Refactor FlipperBleManager
- Move all logic to connect in FlipperServiceApi
  • Loading branch information
LionZXY authored Oct 27, 2021
1 parent 13f9f22 commit ce03dba
Show file tree
Hide file tree
Showing 73 changed files with 1,979 additions and 506 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/internal.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
- 'dev'

env:
VERSION: 0.2
VERSION: 0.3

jobs:
build_internal_release:
Expand Down
4 changes: 4 additions & 0 deletions buildSrc/src/main/java/Dependencies.kt
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,10 @@ object Libs {
"androidx.lifecycle:lifecycle-viewmodel-ktx:${Versions.ANDROID_LIFECYCLE}"
const val LIFECYCLE_RUNTIME_KTX =
"androidx.lifecycle:lifecycle-runtime-ktx:${Versions.ANDROID_LIFECYCLE}"
const val LIFECYCLE_SERVICE =
"androidx.lifecycle:lifecycle-service:${Versions.ANDROID_LIFECYCLE}"
const val LIFECYCLE_KAPT =
"androidx.lifecycle:lifecycle-compiler:${Versions.ANDROID_LIFECYCLE}"

const val ANNOTATIONS = "androidx.annotation:annotation:${Versions.ANDROID_ANNOTATIONS}"
const val APPCOMPAT = "androidx.appcompat:appcompat:${Versions.ANDROIDX_APPCOMPAT}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,4 @@ private fun AppExtension.configureBuildFeatures() {
private fun AppExtension.configureCompileOptions() {
compileOptions.sourceCompatibility = JavaVersion.VERSION_1_8
compileOptions.targetCompatibility = JavaVersion.VERSION_1_8
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import com.flipperdevices.bottombar.model.FlipperBottomTab
import com.flipperdevices.core.di.AppGraph
import com.flipperdevices.core.navigation.screen.InfoScreenProvider
import com.flipperdevices.filemanager.api.navigation.FileManagerScreenProvider
import com.flipperdevices.pair.api.PairComponentApi
import com.github.terrakok.cicerone.Screen
import com.github.terrakok.cicerone.androidx.FragmentScreen
import com.squareup.anvil.annotations.ContributesBinding
Expand All @@ -14,17 +13,12 @@ import javax.inject.Inject
@ContributesBinding(AppGraph::class)
class ScreenTabProviderImpl @Inject constructor(
private val infoScreenProvider: InfoScreenProvider,
private val fileManagerScreenProvider: FileManagerScreenProvider,
private val pairComponentApi: PairComponentApi
private val fileManagerScreenProvider: FileManagerScreenProvider
) : ScreenTabProvider {
override fun getScreen(tab: FlipperBottomTab): Screen {
return when (tab) {
FlipperBottomTab.DEVICE -> infoScreenProvider.deviceInformationScreen(
pairComponentApi.getPairedDevice()
)
FlipperBottomTab.STORAGE -> fileManagerScreenProvider.fileManager(
pairComponentApi.getPairedDevice()
)
FlipperBottomTab.DEVICE -> infoScreenProvider.deviceInformationScreen()
FlipperBottomTab.STORAGE -> fileManagerScreenProvider.fileManager("/")
else -> FragmentScreen { TestFragment() }
}
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.flipperdevices.bridge.api.di

import com.flipperdevices.bridge.api.pair.FlipperPairApi
import android.bluetooth.BluetoothAdapter
import com.flipperdevices.bridge.api.scanner.FlipperScanner

interface FlipperBleComponentInterface {
val flipperScanner: FlipperScanner
val flipperPairApi: FlipperPairApi
val bluetoothAdapter: BluetoothAdapter
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,33 @@
package com.flipperdevices.bridge.api.manager

import android.bluetooth.BluetoothDevice
import com.flipperdevices.bridge.api.model.FlipperGATTInformation
import kotlinx.coroutines.flow.StateFlow
import no.nordicsemi.android.ble.ktx.state.ConnectionState
import com.flipperdevices.bridge.api.manager.delegates.FlipperConnectionInformationApi
import com.flipperdevices.bridge.api.manager.service.FlipperInformationApi
import com.flipperdevices.bridge.api.manager.service.FlipperSerialApi

interface FlipperBleManager : FlipperSerialApi {
val isDeviceConnected: Boolean
interface FlipperBleManager {
// Manager delegates
val connectionInformationApi: FlipperConnectionInformationApi

// This section provide access to device apis
val informationApi: FlipperInformationApi
val flipperRequestApi: FlipperRequestApi
fun getInformationStateFlow(): StateFlow<FlipperGATTInformation>
fun getConnectionStateFlow(): StateFlow<ConnectionState>
fun connectToDevice(device: BluetoothDevice)
fun disconnectDevice()
val serialApi: FlipperSerialApi

/**
* Connect to device {@param device}
* Await while disconnect process is not finish
*/
suspend fun connectToDevice(device: BluetoothDevice)

/**
* Disconnect from current device
* Await while disconnect process is not finish
*/
suspend fun disconnectDevice()

/**
* Close manager, unregister receivers
*/
fun close()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.flipperdevices.bridge.api.manager.delegates

import kotlinx.coroutines.flow.StateFlow
import no.nordicsemi.android.ble.ktx.state.ConnectionState

interface FlipperConnectionInformationApi {
fun isDeviceConnected(): Boolean
fun getConnectionStateFlow(): StateFlow<ConnectionState>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.flipperdevices.bridge.api.manager.service

import com.flipperdevices.bridge.api.model.FlipperGATTInformation
import kotlinx.coroutines.flow.StateFlow

interface FlipperInformationApi {
fun getInformationFlow(): StateFlow<FlipperGATTInformation>
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.flipperdevices.bridge.api.manager
package com.flipperdevices.bridge.api.manager.service

import kotlinx.coroutines.flow.Flow

Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package com.flipperdevices.bridge.impl.di

import com.flipperdevices.bridge.api.pair.FlipperPairApi
import com.flipperdevices.bridge.api.scanner.FlipperScanner
import com.flipperdevices.bridge.impl.pair.FlipperPairApiImpl
import com.flipperdevices.bridge.impl.scanner.FlipperScannerImpl
import dagger.Binds
import dagger.Module
Expand All @@ -13,8 +11,4 @@ abstract class FlipperBleModule {
@Binds
@Singleton
abstract fun provideFlipperScanner(flipperScanner: FlipperScannerImpl): FlipperScanner

@Binds
@Singleton
abstract fun provideFlipperPairApi(flipperPairApi: FlipperPairApiImpl): FlipperPairApi
}
Loading

0 comments on commit ce03dba

Please sign in to comment.