Skip to content

Commit e163d75

Browse files
committed
Align with BlueST-SDK V1.1.0
Signed-off-by: Luca Pezzoni <[email protected]>
1 parent bd33e48 commit e163d75

29 files changed

+603
-54
lines changed

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ android {
2121
applicationId "com.st.demo"
2222
minSdk rootProject.minSdk
2323
targetSdkVersion targetSdk
24-
versionCode 1
25-
versionName "4.17"
24+
versionCode 2
25+
versionName "5.0.0"
2626

2727
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
2828
vectorDrawables {

build.gradle

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,34 +11,34 @@ buildscript {
1111
ext {
1212
// Sdk and Tools
1313
minSdk = 26
14-
targetSdk = 33
15-
compileSdk = 33
14+
targetSdk = 34
15+
compileSdk = 34
1616

17-
compose_bom_date = '2023.06.01'
17+
compose_bom_date = '2023.10.01'
1818

1919
accompanist_version = '0.30.1'
20-
activity_compose_version = '1.7.2'
20+
activity_compose_version = '1.8.0'
2121
appcompat_version = '1.6.1'
22-
compose_compiler_version = '1.4.7'
23-
core_ktx_version = '1.10.1'
22+
compose_compiler_version = '1.5.3'
23+
core_ktx_version = '1.12.0'
2424
espresso_core_version = '3.5.1'
25-
google_material_version = '1.9.0'
26-
gradle_version = '8.1.0'
27-
hilt_version = '2.47'
25+
google_material_version = '1.10.0'
26+
gradle_version = '8.1.2'
27+
hilt_version = '2.48.1'
2828
hilt_compose_version = '1.0.0'
2929
hilt_navigation_fragment_version = '1.0.0'
3030
junit_version = '4.13.2'
3131
junit_ui_version = '1.1.5'
32-
kotlin_version = '1.8.21'
33-
kotlinx_serialization_version = '1.5.1'
32+
kotlin_version = '1.9.10'
33+
kotlinx_serialization_version = '1.6.0'
3434
kotlinx_retrofit_version = '1.0.0'
3535
ktlint_version = '11.3.1'
36-
lifecycle_version = '2.6.1'
36+
lifecycle_version = '2.6.2'
3737
logging_version = '5.0.0-alpha.11'
3838
nav_version = '2.6.0'
39-
navigation_compose_version = '2.6.0'
39+
navigation_compose_version = '2.7.4'
4040
retrofit_version = '2.9.0'
41-
room_version = '2.6.0-alpha01'
41+
room_version = '2.6.0'
4242
}
4343

4444
repositories {
@@ -57,5 +57,5 @@ plugins {
5757
id "com.android.library" version "$gradle_version" apply false
5858
id "org.jetbrains.kotlin.android" version "$kotlin_version" apply false
5959
id "org.jetbrains.kotlin.plugin.serialization" version "$kotlin_version" apply false
60-
id 'com.google.devtools.ksp' version '1.8.21-1.0.11' apply false
60+
id 'com.google.devtools.ksp' version '1.9.10-1.0.13' apply false
6161
}

st_blue_sdk/.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
/build
1+
/build
2+
schemas

st_blue_sdk/build.gradle

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ plugins {
1212
id 'kotlin-kapt'
1313
id 'dagger.hilt.android.plugin'
1414
id 'kotlinx-serialization'
15-
id 'com.google.devtools.ksp'
15+
id 'com.google.devtools.ksp' version '1.9.10-1.0.13'
1616
}
1717

1818
apply from: file('publish.gradle')
@@ -52,9 +52,9 @@ android {
5252
sourceCompatibility JavaVersion.VERSION_17
5353
targetCompatibility JavaVersion.VERSION_17
5454
}
55-
5655
ksp {
5756
arg("room.schemaLocation", "$projectDir/schemas")
57+
arg("room.generateKotlin","true")
5858
}
5959

6060
namespace 'com.st.blue_sdk'
@@ -87,8 +87,9 @@ dependencies {
8787

8888
// Room
8989
implementation "androidx.room:room-runtime:$room_version"
90-
implementation "androidx.room:room-ktx:$room_version"
9190
ksp "androidx.room:room-compiler:$room_version"
91+
annotationProcessor("androidx.room:room-compiler:$room_version")
92+
implementation("androidx.room:room-ktx:$room_version")
9293

9394
// Tests
9495
testImplementation "junit:junit:$junit_version"

st_blue_sdk/publish.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ apply plugin: 'maven-publish'
1010

1111
def LIB_GROUP_ID = 'com.st.blue.sdk'
1212
def LIB_ARTIFACT_ID = 'st-blue-sdk'
13-
def LIB_VERSION = '1.0.10'
13+
def LIB_VERSION = '1.1.0'
1414

1515
afterEvaluate {
1616
publishing {

st_blue_sdk/src/main/java/com/st/blue_sdk/board_catalog/BoardCatalogRepoImpl.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import com.st.blue_sdk.board_catalog.models.BoardDescription
2626
import com.st.blue_sdk.board_catalog.models.BoardFirmware
2727
import com.st.blue_sdk.board_catalog.models.DtmiContent
2828
import com.st.blue_sdk.board_catalog.models.DtmiModel
29+
import com.st.blue_sdk.board_catalog.models.FirmwareMaturity
2930
import com.st.blue_sdk.board_catalog.models.Sensor
3031
import com.st.blue_sdk.board_catalog.models.toDtmiContent
3132
import dagger.hilt.android.qualifiers.ApplicationContext
@@ -187,7 +188,8 @@ class BoardCatalogRepoImpl @Inject constructor(
187188

188189
val savedBoardsModelString = pref.getString(CUSTOM_BOARDS_MODEL, null)
189190
savedBoardsModelString?.let {
190-
val result = json.decodeFromString<BoardCatalog>(savedBoardsModelString)?.let { boardCatalog ->
191+
val result = json.decodeFromString<BoardCatalog>(savedBoardsModelString)
192+
?.let { boardCatalog ->
191193
boardCatalog.bleListBoardFirmwareV1?.let {
192194
db.add(it)
193195
cache.addAll(it)
@@ -321,7 +323,11 @@ class BoardCatalogRepoImpl @Inject constructor(
321323
return cache.find { it.bleFwId == bleFwId && deviceId == it.bleDevId }
322324
}
323325

324-
override suspend fun getDtmiModel(deviceId: String, bleFwId: String, isBeta: Boolean): DtmiModel? {
326+
override suspend fun getDtmiModel(
327+
deviceId: String,
328+
bleFwId: String,
329+
isBeta: Boolean
330+
): DtmiModel? {
325331
if (needSync()) {
326332
sync()
327333
}
@@ -434,13 +440,19 @@ class BoardCatalogRepoImpl @Inject constructor(
434440
if (inStream != null) {
435441
val text = inStream.bufferedReader(StandardCharsets.ISO_8859_1).readText()
436442
inStream.close()
437-
val result = json.decodeFromString<BoardCatalog>(text)?.let { boardCatalog ->
443+
val result = json.decodeFromString<BoardCatalog>(text).let { boardCatalog ->
438444
cache.clear()
439445
boardCatalog.bleListBoardFirmwareV1?.let {
446+
it.forEach { it2 ->
447+
if (it2.bleFwId == "0xFF") it2.maturity = FirmwareMaturity.CUSTOM
448+
}
440449
db.add(it)
441450
//it.forEach { it2 -> cache.add(it2) }
442451
}
443452
boardCatalog.bleListBoardFirmwareV2?.let {
453+
it.forEach { it2 ->
454+
if (it2.bleFwId == "0xFF") it2.maturity = FirmwareMaturity.CUSTOM
455+
}
444456
db.add(it)
445457
//it.forEach { it2 -> cache.add(it2) }
446458
}

st_blue_sdk/src/main/java/com/st/blue_sdk/board_catalog/api/serializers/BoardFotaTypeSerializer.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,12 @@ package com.st.blue_sdk.board_catalog.api.serializers
99

1010
import com.st.blue_sdk.board_catalog.models.BoardFotaType
1111
import kotlinx.serialization.KSerializer
12-
import kotlinx.serialization.Serializer
1312
import kotlinx.serialization.descriptors.PrimitiveKind
1413
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
1514
import kotlinx.serialization.descriptors.SerialDescriptor
1615
import kotlinx.serialization.encoding.Decoder
1716
import kotlinx.serialization.encoding.Encoder
1817

19-
@Serializer(forClass = BoardFotaType::class)
2018
class BoardFotaTypeSerializer : KSerializer<BoardFotaType> {
2119

2220
override val descriptor: SerialDescriptor =

st_blue_sdk/src/main/java/com/st/blue_sdk/board_catalog/api/serializers/BoardStatusTypeSerializer.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,12 @@ package com.st.blue_sdk.board_catalog.api.serializers
22

33
import com.st.blue_sdk.board_catalog.models.BoardStatus
44
import kotlinx.serialization.KSerializer
5-
import kotlinx.serialization.Serializer
65
import kotlinx.serialization.descriptors.PrimitiveKind
76
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
87
import kotlinx.serialization.descriptors.SerialDescriptor
98
import kotlinx.serialization.encoding.Decoder
109
import kotlinx.serialization.encoding.Encoder
1110

12-
@Serializer(forClass = BoardStatus::class)
1311
class BoardStatusTypeSerializer : KSerializer<BoardStatus> {
1412

1513
override val descriptor: SerialDescriptor =

st_blue_sdk/src/main/java/com/st/blue_sdk/board_catalog/api/serializers/BootLoaderTypeSerializer.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,12 @@ package com.st.blue_sdk.board_catalog.api.serializers
22

33
import com.st.blue_sdk.board_catalog.models.BootLoaderType
44
import kotlinx.serialization.KSerializer
5-
import kotlinx.serialization.Serializer
65
import kotlinx.serialization.descriptors.PrimitiveKind
76
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
87
import kotlinx.serialization.descriptors.SerialDescriptor
98
import kotlinx.serialization.encoding.Decoder
109
import kotlinx.serialization.encoding.Encoder
1110

12-
@Serializer(forClass = BootLoaderType::class)
1311
class BootLoaderTypeSerializer : KSerializer<BootLoaderType> {
1412

1513
override val descriptor: SerialDescriptor =

st_blue_sdk/src/main/java/com/st/blue_sdk/board_catalog/api/serializers/DateSerializer.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ package com.st.blue_sdk.board_catalog.api.serializers
99

1010
import android.util.Log
1111
import kotlinx.serialization.KSerializer
12-
import kotlinx.serialization.Serializer
1312
import kotlinx.serialization.descriptors.PrimitiveKind
1413
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
1514
import kotlinx.serialization.descriptors.SerialDescriptor
@@ -18,7 +17,6 @@ import kotlinx.serialization.encoding.Encoder
1817
import java.text.SimpleDateFormat
1918
import java.util.*
2019

21-
@Serializer(forClass = Date::class)
2220
class DateSerializer : KSerializer<Date> {
2321

2422
private var formatStrings = listOf(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.st.blue_sdk.board_catalog.api.serializers
2+
3+
import com.st.blue_sdk.board_catalog.models.FirmwareMaturity
4+
import kotlinx.serialization.KSerializer
5+
import kotlinx.serialization.descriptors.PrimitiveKind
6+
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
7+
import kotlinx.serialization.descriptors.SerialDescriptor
8+
import kotlinx.serialization.encoding.Decoder
9+
import kotlinx.serialization.encoding.Encoder
10+
11+
class FirmwareMaturityTypeSerializer : KSerializer<FirmwareMaturity> {
12+
13+
override val descriptor: SerialDescriptor =
14+
PrimitiveSerialDescriptor("FirmwareMaturityType", PrimitiveKind.STRING)
15+
16+
override fun deserialize(decoder: Decoder): FirmwareMaturity =
17+
FirmwareMaturity.valueOf(decoder.decodeString().uppercase())
18+
19+
override fun serialize(encoder: Encoder, value: FirmwareMaturity) {
20+
val encoded = value.name.lowercase()
21+
encoder.encodeString(encoded)
22+
}
23+
}

st_blue_sdk/src/main/java/com/st/blue_sdk/board_catalog/db/BoardCatalogDB.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import com.st.blue_sdk.board_catalog.db.converters.Board_compatibilityDataConver
1515
import com.st.blue_sdk.board_catalog.db.converters.CloudAppDataConverter
1616
import com.st.blue_sdk.board_catalog.db.converters.CompatibleSensorAdapterDataConverter
1717
import com.st.blue_sdk.board_catalog.db.converters.ComponentsDataConverter
18+
import com.st.blue_sdk.board_catalog.db.converters.DemoDecoratorDataConverter
1819
import com.st.blue_sdk.board_catalog.db.converters.FotaDetailsConverter
1920
import com.st.blue_sdk.board_catalog.db.converters.OptionByteDataConverter
2021
import com.st.blue_sdk.board_catalog.db.converters.PowerModeDataConverter
@@ -24,7 +25,7 @@ import com.st.blue_sdk.board_catalog.models.BoardFirmware
2425
import com.st.blue_sdk.board_catalog.models.Sensor
2526

2627
@Database(
27-
version = 10,
28+
version = 15,
2829
exportSchema = true,
2930
entities = [
3031
BoardFirmware::class,
@@ -41,7 +42,8 @@ import com.st.blue_sdk.board_catalog.models.Sensor
4142
CompatibleSensorAdapterDataConverter::class,
4243
PowerModeDataConverter::class,
4344
Board_compatibilityDataConverter::class,
44-
SensorConfigurationConverter::class
45+
SensorConfigurationConverter::class,
46+
DemoDecoratorDataConverter::class
4547
)
4648
abstract class BoardCatalogDB : RoomDatabase() {
4749
abstract fun boardCatalogDao(): BoardCatalogDao
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.st.blue_sdk.board_catalog.db.converters
2+
3+
import androidx.room.TypeConverter
4+
import com.st.blue_sdk.board_catalog.models.DemoDecorator
5+
import kotlinx.serialization.decodeFromString
6+
import kotlinx.serialization.encodeToString
7+
import kotlinx.serialization.json.Json
8+
9+
class DemoDecoratorDataConverter {
10+
@TypeConverter
11+
fun fromDemoDecorator(value: DemoDecorator): String {
12+
return Json.encodeToString(value)
13+
}
14+
15+
@TypeConverter
16+
fun toDemoDecorator(value: String): DemoDecorator {
17+
return Json.decodeFromString(value)
18+
}
19+
}

st_blue_sdk/src/main/java/com/st/blue_sdk/board_catalog/models/BoardDescription.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,6 @@ data class BoardDescription(
3737
@ColumnInfo(name = "brd_variant")
3838
@SerialName(value = "brd_variant")
3939
val boardVariant: String?=null,
40-
@ColumnInfo(name = "components")
41-
@SerialName(value = "components")
42-
val components: List<String>?=null,
4340
@ColumnInfo(name = "friendly_name")
4441
@SerialName(value = "friendly_name")
4542
val friendlyName: String,

st_blue_sdk/src/main/java/com/st/blue_sdk/board_catalog/models/BoardFirmware.kt

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,20 @@
55
* the root directory of this software component.
66
* If no LICENSE file comes with this software, it is provided AS-IS.
77
*/
8+
@file:UseSerializers(FirmwareMaturityTypeSerializer::class)
89

910
package com.st.blue_sdk.board_catalog.models
1011

12+
import com.st.blue_sdk.board_catalog.api.serializers.FirmwareMaturityTypeSerializer
13+
import kotlinx.serialization.UseSerializers
14+
1115
import androidx.room.ColumnInfo
1216
import androidx.room.Entity
1317
import com.st.blue_sdk.models.Boards
1418
import kotlinx.serialization.SerialName
1519
import kotlinx.serialization.Serializable
1620

21+
1722
@Entity(
1823
primaryKeys = ["ble_dev_id", "ble_fw_id"],
1924
tableName = "board_firmware"
@@ -38,9 +43,6 @@ data class BoardFirmware(
3843
@ColumnInfo(name = "dtmi")
3944
@SerialName("dtmi")
4045
val dtmi: String? = null,
41-
@ColumnInfo(name = "flow_enable")
42-
@SerialName("flow_enable")
43-
val flowEnable: Int? = null,
4446
@ColumnInfo(name = "cloud_apps")
4547
@SerialName(value = "cloud_apps")
4648
val cloudApps: List<CloudApp>,
@@ -61,7 +63,11 @@ data class BoardFirmware(
6163
var fota: FotaDetails,
6264
@ColumnInfo(name = "compatible_sensor_adapters")
6365
@SerialName("compatible_sensor_adapters")
64-
var compatibleSensorAdapters: List<Int>?=null
66+
var compatibleSensorAdapters: List<Int>?=null,
67+
@SerialName("demo_decorator")
68+
var demoDecorator: DemoDecorator?=null,
69+
@SerialName("maturity")
70+
var maturity: FirmwareMaturity?=null
6571
) {
6672

6773
fun friendlyName(): String =
@@ -82,7 +88,8 @@ data class BoardFirmware(
8288
characteristics = emptyList(),
8389
optionBytes = emptyList(),
8490
fwDesc = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer tempor posuere enim, et imperdiet quam mattis at.",
85-
fota = FotaDetails()
91+
fota = FotaDetails(),
92+
maturity = FirmwareMaturity.RELEASE
8693
)
8794
}
8895

@@ -96,4 +103,22 @@ data class BoardFirmware(
96103
return true
97104
}
98105

106+
override fun hashCode(): Int {
107+
var result = bleDevId.hashCode()
108+
result = 31 * result + bleFwId.hashCode()
109+
result = 31 * result + brdName.hashCode()
110+
result = 31 * result + fwVersion.hashCode()
111+
result = 31 * result + fwName.hashCode()
112+
result = 31 * result + (dtmi?.hashCode() ?: 0)
113+
result = 31 * result + cloudApps.hashCode()
114+
result = 31 * result + characteristics.hashCode()
115+
result = 31 * result + optionBytes.hashCode()
116+
result = 31 * result + fwDesc.hashCode()
117+
result = 31 * result + (changelog?.hashCode() ?: 0)
118+
result = 31 * result + fota.hashCode()
119+
result = 31 * result + (compatibleSensorAdapters?.hashCode() ?: 0)
120+
result = 31 * result + (demoDecorator?.hashCode() ?: 0)
121+
result = 31 * result + (maturity?.hashCode() ?: 0)
122+
return result
123+
}
99124
}

0 commit comments

Comments
 (0)