Skip to content

Commit cd55674

Browse files
committed
Align with ST BLE Sensor V5.2.5
Signed-off-by: Luca Pezzoni <luca.pezzoni@st.com>
1 parent 472dcb9 commit cd55674

534 files changed

Lines changed: 21479 additions & 22125 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ GPR_API_KEY=XXXXXXXXXXXXXXXXXXXXXXXX
1616
For using this application is necessary to downlaod the Android BlueST-SDK from:
1717
https://github.com/STMicroelectronics/BlueSTSDK_Android
1818

19-
tag BlueST-SDK_V1.2.0
19+
tag BlueST-SDK_V1.2.4
2020

2121
and follow the instruction for compiling and publish on local maven repository the 2 libraries necessary for this application:
2222
* st-blue-sdk

app/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ android {
3636
applicationId = "com.st.bluems"
3737
minSdk = stMinSdk
3838
targetSdk = stTargetSdk
39-
versionCode = 209
40-
versionName = "5.2.4"
39+
versionCode = 222
40+
versionName = "5.2.5"
4141

4242
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
4343
vectorDrawables { useSupportLibrary = true }

app/src/main/java/com/st/bluems/ui/composable/DeviceList.kt

Lines changed: 39 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import android.widget.Toast
1717
import androidx.activity.compose.rememberLauncherForActivityResult
1818
import androidx.activity.result.contract.ActivityResultContracts
1919
import androidx.compose.animation.core.*
20+
import androidx.compose.foundation.ExperimentalFoundationApi
2021
import androidx.compose.foundation.layout.*
2122
import androidx.compose.foundation.lazy.LazyColumn
2223
import androidx.compose.foundation.lazy.itemsIndexed
@@ -35,7 +36,6 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
3536
import androidx.navigation.NavController
3637
import com.google.accompanist.permissions.ExperimentalPermissionsApi
3738
import com.google.accompanist.permissions.rememberMultiplePermissionsState
38-
import com.st.blue_sdk.bt.advertise.getFwInfo
3939
import com.st.blue_sdk.models.Boards
4040
import com.st.blue_sdk.models.Node
4141
import com.st.bluems.NFCConnectionViewModel
@@ -49,6 +49,9 @@ import com.st.ui.theme.LocalDimensions
4949
import com.st.ui.theme.Grey6
5050
import androidx.compose.material3.FloatingActionButton
5151
import androidx.compose.material3.Scaffold
52+
import androidx.compose.ui.unit.IntOffset
53+
import androidx.navigation.NavOptions
54+
import androidx.navigation.navOptions
5255
import com.st.ui.theme.SecondaryBlue
5356

5457
@Composable
@@ -116,9 +119,20 @@ fun DeviceListScreen(
116119
if (boardsDescription.isEmpty()) {
117120
Toast.makeText(context, "Boards Catalog not Available", Toast.LENGTH_SHORT).show()
118121
} else {
119-
navController.navigate(
120-
HomeFragmentDirections.actionHomeFragmentToCatalog()
121-
)
122+
123+
val navOptions: NavOptions = navOptions {
124+
anim {
125+
enter = com.st.ui.R.anim.slide_in_from_left
126+
exit = com.st.ui.R.anim.fade_out
127+
popEnter = com.st.ui.R.anim.fade_in
128+
popExit = com.st.ui.R.anim.slide_out_to_left
129+
}
130+
}
131+
navController.navigate(directions = HomeFragmentDirections.actionHomeFragmentToCatalog(), navOptions = navOptions)
132+
133+
// navController.navigate(
134+
// HomeFragmentDirections.actionHomeFragmentToCatalog()
135+
// )
122136
}
123137
},
124138
goToSourceCode = {
@@ -138,8 +152,8 @@ fun DeviceListScreen(
138152
},
139153
readBetaCatalog = {
140154
forceScan = true
141-
//viewModel.readBetaCatalog()
142-
Toast.makeText(context, "Loaded Beta Catalog Not Implemented", Toast.LENGTH_SHORT).show()
155+
viewModel.readBetaCatalog()
156+
Toast.makeText(context, "Loaded Beta Catalog", Toast.LENGTH_SHORT).show()
143157
},
144158
readReleaseCatalog = {
145159
forceScan = true
@@ -175,22 +189,19 @@ fun DeviceListScreen(
175189
)
176190
}
177191
},
178-
onInfoClick = { node ->
179-
if (boardsDescription.isNotEmpty()) {
180-
val deviceId = node.advertiseInfo?.getFwInfo()?.deviceId
181-
deviceId?.let {
182-
navController.navigate(
183-
HomeFragmentDirections.actionHomeFragmentToCatalogBoard(deviceId)
184-
)
185-
}
186-
}
187-
},
188192
onStartScan = {
189193
viewModel.startScan()
190194
},
191195
onAddCatalogEntryFromFile = { fileUri ->
192196
forceScan = true
193-
viewModel.setLocalBoardCatalog(fileUri = fileUri)
197+
val result = viewModel.setLocalBoardCatalog(fileUri = fileUri)
198+
result?.let { res ->
199+
if(res.startsWith("Added")) {
200+
Toast.makeText(context, result, Toast.LENGTH_SHORT).show()
201+
} else {
202+
Toast.makeText(context, result, Toast.LENGTH_LONG).show()
203+
}
204+
}
194205
}
195206
)
196207
}
@@ -230,7 +241,6 @@ fun DeviceListWithPermissionsCheck(
230241
onEnableBle: () -> Unit,
231242
onEnableLocation: () -> Unit,
232243
onNodeSelected: (Node) -> Unit,
233-
onInfoClick: (Node) -> Unit,
234244
onAddCatalogEntryFromFile: (Uri) -> Unit
235245
) {
236246
val context = LocalContext.current
@@ -291,7 +301,6 @@ fun DeviceListWithPermissionsCheck(
291301
switchServerForced = switchServerForced,
292302
onStartScan = onStartScan,
293303
onNodeSelected = onNodeSelected,
294-
onInfoClick = onInfoClick,
295304
onAddCatalogEntryFromFile = onAddCatalogEntryFromFile
296305
)
297306
}
@@ -465,8 +474,7 @@ fun DeviceList(
465474
switchServerForced: () -> Unit = { /** NOP **/ },
466475
onStartScan: () -> Unit = { /** NOOP**/ },
467476
onAddCatalogEntryFromFile: (Uri) -> Unit = { /** NOOP**/ },
468-
onNodeSelected: (Node) -> Unit = { /** NOOP**/ },
469-
onInfoClick: (Node) -> Unit = { /** NOOP**/ }
477+
onNodeSelected: (Node) -> Unit = { /** NOOP**/ }
470478
) {
471479
var filters by remember { mutableStateOf(value = DeviceListFilter()) }
472480
var openFilterDialog by rememberSaveable { mutableStateOf(value = false) }
@@ -548,9 +556,7 @@ fun DeviceList(
548556
pinnedDevices = pinnedDevices,
549557
onPinChange = onPinChange,
550558
goToCatalog = goToCatalog,
551-
onNodeSelected = onNodeSelected,
552-
isExpert = isExpert,
553-
onInfoClick = onInfoClick
559+
onNodeSelected = onNodeSelected
554560
)
555561
}
556562

@@ -564,16 +570,15 @@ fun DeviceList(
564570
}
565571
}
566572

573+
@OptIn(ExperimentalFoundationApi::class)
567574
@Composable
568575
fun DeviceList(
569576
modifier: Modifier = Modifier,
570577
filteredDevices: List<Node>,
571578
pinnedDevices: List<String>,
572579
onPinChange: (String, Boolean) -> Unit,
573580
goToCatalog: () -> Unit = { /** NOOP**/ },
574-
onNodeSelected: (Node) -> Unit = { /** NOOP**/ },
575-
isExpert: Boolean = false,
576-
onInfoClick: (Node) -> Unit = { /** NOOP**/ }
581+
onNodeSelected: (Node) -> Unit = { /** NOOP**/ }
577582
) {
578583
Column(
579584
modifier = modifier
@@ -604,14 +609,18 @@ fun DeviceList(
604609

605610
itemsIndexed(items = filteredDevices) { _, item ->
606611
DeviceListItem(
612+
modifier = Modifier.animateItem(
613+
fadeInSpec = null, fadeOutSpec = null, placementSpec = spring(
614+
stiffness = Spring.StiffnessMediumLow,
615+
visibilityThreshold = IntOffset.VisibilityThreshold
616+
)
617+
),
607618
isPin = pinnedDevices.contains(item.device.address),
608619
item = item,
609620
onNodeSelected = onNodeSelected,
610621
onPinChange = { change ->
611622
onPinChange(item.device.address, change)
612-
},
613-
isExpert = isExpert,
614-
onInfoClick = onInfoClick
623+
}
615624
)
616625
}
617626

app/src/main/java/com/st/bluems/ui/composable/DeviceListItem.kt

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ package com.st.bluems.ui.composable
1010
import android.annotation.SuppressLint
1111
import androidx.compose.foundation.ExperimentalFoundationApi
1212
import androidx.compose.foundation.Image
13-
import androidx.compose.foundation.combinedClickable
13+
import androidx.compose.foundation.clickable
1414
import androidx.compose.foundation.layout.*
1515
import androidx.compose.material.icons.Icons
1616
import androidx.compose.material.icons.filled.PushPin
@@ -20,8 +20,6 @@ import androidx.compose.material3.*
2020
import androidx.compose.runtime.*
2121
import androidx.compose.ui.Alignment
2222
import androidx.compose.ui.Modifier
23-
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
24-
import androidx.compose.ui.platform.LocalHapticFeedback
2523
import androidx.compose.ui.res.painterResource
2624
import androidx.compose.ui.res.stringResource
2725
import androidx.compose.ui.tooling.preview.Preview
@@ -39,9 +37,7 @@ fun DeviceListItem(
3937
item: Node,
4038
isPin: Boolean = false,
4139
onPinChange: (Boolean) -> Unit = { /** NOOP**/ },
42-
onNodeSelected: (Node) -> Unit = { /** NOOP**/ },
43-
isExpert: Boolean = false,
44-
onInfoClick: (Node) -> Unit = { /** NOOP**/ }
40+
onNodeSelected: (Node) -> Unit = { /** NOOP**/ }
4541
) {
4642
DeviceListItem(
4743
modifier = modifier,
@@ -58,9 +54,7 @@ fun DeviceListItem(
5854
isSleeping = item.isSleeping,
5955
isCustomFw = item.isCustomFw,
6056
hasGeneralPurpose = item.hasGeneralPurpose,
61-
onNodeSelected = { onNodeSelected(item) },
62-
isExpert = isExpert,
63-
onInfoClick = { onInfoClick(item) }
57+
onNodeSelected = { onNodeSelected(item) }
6458
)
6559
}
6660

@@ -81,24 +75,12 @@ fun DeviceListItem(
8175
isSleeping: Boolean,
8276
hasGeneralPurpose: Boolean,
8377
onPinChange: (Boolean) -> Unit = { /** NOOP**/ },
84-
onNodeSelected: () -> Unit = { /** NOOP**/ },
85-
isExpert: Boolean = false,
86-
onInfoClick: () -> Unit = { /** NOOP**/ }
78+
onNodeSelected: () -> Unit = { /** NOOP**/ }
8779
) {
88-
val haptics = LocalHapticFeedback.current
89-
9080
Surface(
9181
modifier = modifier
9282
.fillMaxWidth()
93-
.combinedClickable(
94-
onClick = onNodeSelected,
95-
onLongClick = {
96-
if (isExpert) {
97-
haptics.performHapticFeedback(HapticFeedbackType.LongPress)
98-
onInfoClick()
99-
}
100-
}
101-
),
83+
.clickable { onNodeSelected() },
10284
shape = Shapes.small,
10385
shadowElevation = LocalDimensions.current.elevationNormal
10486
) {

app/src/main/java/com/st/bluems/ui/home/HomeViewModel.kt

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -158,25 +158,22 @@ class HomeViewModel @Inject constructor(
158158
return node
159159
}
160160

161-
fun setLocalBoardCatalog(fileUri: Uri) {
162-
viewModelScope.launch {
163-
blueManager.setBoardCatalog(
161+
fun setLocalBoardCatalog(fileUri: Uri): String? {
162+
val result: String?
163+
runBlocking {
164+
val catalogResult = blueManager.setBoardCatalog(
164165
fileUri = fileUri,
165166
contentResolver = contentResolver
166167
)
168+
result = catalogResult.second
167169
}
170+
//Log.i("DB", "setLocalBoardCatalog = $result")
171+
return result
168172
}
169173

170-
// fun readBetaCatalog() {
171-
// viewModelScope.launch {
172-
// val url: String = BuildConfig.BLUESTSDK_DB_BASE_BETA_URL
173-
// blueManager.reset(url)
174-
// _boardsDescription.value = blueManager.getBoardsDescription()
175-
// //Log.i("DB","readBetaCatalog checkBoardsCatalogPresence = ${ _boardsDescription.value.size}")
176-
//
177-
// }
178-
// //checkBoardsCatalogPresence()
179-
// }
174+
fun readBetaCatalog() {
175+
//checkBoardsCatalogPresence()
176+
}
180177

181178
fun readReleaseCatalog() {
182179
viewModelScope.launch {
@@ -320,7 +317,7 @@ class HomeViewModel @Inject constructor(
320317
//Move to Beta Version
321318
stPreferences.setBetaApplicationFlag(true)
322319
//Load the Beta Catalog
323-
//readBetaCatalog()
320+
readBetaCatalog()
324321
_isBetaRelease.value = true
325322
}
326323
//Every time we switch between beta/release... rest the flag for disabling the hidden demos

app/src/main/res/navigation/nav_graph.xml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,6 @@
3838
<action
3939
android:id="@+id/action_homeFragment_to_catalog"
4040
app:destination="@id/catalog" />
41-
42-
<action
43-
android:id="@+id/action_homeFragment_to_catalog_board"
44-
app:destination="@id/catalog">
45-
<argument
46-
android:name="boardId"
47-
app:argType="string" />
48-
</action>
49-
5041
</fragment>
5142

5243
<fragment

0 commit comments

Comments
 (0)